PDF ページのテキストを構文解析して文にしようとしていますが、予想よりもはるかに困難です。イニシャル、小数、引用符など、ピリオドを含むが必ずしも文を終了するわけではないなど、考慮すべき特殊なケースがたくさんあります。
ここにいる誰かが、C または C++ の NLP ライブラリに精通しており、この作業を手伝ったり、アドバイスを提供したりできるかどうか知りたいです。
助けてくれてありがとう。
これは文境界曖昧性解消と呼ばれる問題です。ウィキペディアのページにはいくつかのライブラリがリストされていますが、それらのいずれかが C から簡単に呼び出せるかどうかはわかりません。
文境界曖昧性解消の理論に関する多くの論文を見つけることができます。Unicode Standard Annex #29 - Unicode Text Segmentationの Unicode Standardでは、単純な文の境界検出アルゴリズムも定義されています。
文境界曖昧性解消(SBD) は、NLP の分野における中心的な問題です。残念ながら、私が過去に見つけて使用したものは C ではありません (速度が大きな問題でない限り、文字列ベースのタスクに好まれる言語ではないため)。
パイプライン
可能であれば単純なパイプラインを作成したいと思います。Unix システムでは問題にならないはずですが、Windows でスクリプト言語を使用している場合でも、ギャップを埋めることができるはずです。これは、SBD が単に Z 言語用に見つけられる唯一の SBD ではなく、仕事に最適なツールになり得ることを意味します。たとえば、
./pdfconvert | SBD | my_C_tool > ...
これは私の仕事の標準的な方法であり、あなたが述べたよりも厳しい要件がない限り、それで問題ありません。
ツール
使用できるツールに関しては、
モデルとトレーニング
さて、これらのツールの中には、そのままで良い結果が得られるものもあれば、そうでないものもあります。OpenNLP には、すぐに使用できる英語文検出のモデルが含まれており、これが役立つ場合があります。ただし、ドメインがツールがトレーニングされたドメインと大幅に異なる場合、うまく機能しない可能性があります。たとえば、彼らが新聞のテキストで訓練された場合、そのタスクは非常に得意かもしれませんが、手紙はひどいものです。
そのため、例を示して SBD ツールをトレーニングすることをお勧めします。各ツールはこのプロセスを文書化する必要がありますが、少し手間がかかる可能性があることを警告しておきます。ドキュメント X でツールを実行し、不適切な分割を手動で修正し、正しく分割されたドキュメント X をツールに戻してトレーニングする必要があります。ドキュメントのサイズと関連するツールに応じて、妥当な結果が得られるまで、1 つまたは 100 のドキュメントに対してこれを行う必要がある場合があります。
ご不明な点がございましたら、お気軽にお問い合わせください。
これは、コンピューター言語ではなく自然言語の解析問題です。そのため、簡単な答えは決してありません。ただし、それらは適用できるヒューリスティックであり、PDF を文に分割する理由と、それらを取得した後に文で何をしたいのかを知っていれば、お勧めできますか?
私はしばらく前に同じ要件を持っていました。いくつかの解決策を試しました。それらの中で最高のものは splitta ( http://code.google.com/p/splitta/ ) でした。私が投げたすべてのエッジ条件でうまく機能しました。スプリットのパイソン。
私もsentrick(Java)を試しました。 http://www.denkselbst.de/sentrick/index.html
残念ながら、私が試したすべてのオプションの完全なリストはありません。