8

膨大な量のテキストから文章を解析しようとしています。Javaを使用して、OpenNLPやStanford'sParserなどのNLPツールから始めました。

しかし、ここで私は行き詰まります。これらのパーサーはどちらも非常に優れていますが、不均一なテキストになると失敗します。

たとえば、私のテキストでは、ほとんどの文はピリオドで区切られていますが、箇条書きのようにそうでない場合もあります。ここでは、両方の解析が無残に失敗します。

複数の文のターミネータのスタンフォード解析でオプションを設定しようとしましたが、出力はそれほど良くありませんでした!

何か案は??

編集:簡単にするために、区切り文字が改行( "\ n")またはピリオド( "。")のいずれかであるテキストを解析しようとしています...

4

5 に答える 5

6

まず、タスクを明確に定義する必要があります。正確には、「文」の定義は何ですか?あなたがそのような定義を得るまで、あなたはただ輪になってさまようでしょう。

第二に、汚れたテキストのクリーニングは通常、「文の分割」とはかなり異なるタスクです。さまざまなNLPセンテンスチャンカーは、比較的クリーンな入力テキストを想定しています。HTML、抽出されたパワーポイント、またはその他のノイズからテキストに到達することは、別の問題です。

第三に、スタンフォードや他の大口径デバイスは統計的です。したがって、エラー率がゼロ以外であることが保証されます。データがトレーニングされたものに似ていないほど、エラー率は高くなります。

于 2011-12-14T02:20:10.840 に答える
3

カスタムセンテンススプリッターを作成します。スタンフォードスプリッターのようなものを最初のパスとして使用し、次にルールベースのポストプロセッサーを記述して間違いを修正することができます。

解析していた生物医学テキストに対して、このようなことをしました。私はGENIAスプリッターを使用し、事後に修正しました。

編集:入力HTMLを取り込む場合は、最初にそれを前処理する必要があります。たとえば、箇条書きなどを処理します。次に、スプ​​リッターを適用します。

于 2011-12-13T19:32:29.257 に答える
1

自然言語処理のためのもう1つの優れたツールキットであるGATEがあります。標準のANNIEセンテンススプリッター(ニーズに完全には適合しません)やRegExセンテンススプリッターなど、多数のセンテンススプリッターがあります。トリッキーな分割には後で使用します。

目的に合った正確なパイプラインは次のとおりです。

  1. ドキュメントリセットPR。
  2. ANNIE英語トークナイザー。
  3. ANNIERegExセンテンススプリッター。

また、GATEのJAPEルールを使用して、さらに柔軟なパターン検索を行うことができます。(完全なGATEドキュメントについては、 Taoを参照してください)。

于 2011-12-12T14:52:56.813 に答える
1

スタンフォードNLPまたはOpenNLPを使い続けたい場合は、モデルを再トレーニングすることをお勧めします。これらのパッケージのほとんどすべてのツールは、機械学習ベースです。カスタマイズされたトレーニングデータを使用する場合にのみ、理想的なモデルとパフォーマンスを提供できます。

これが私の提案です:あなたの基準に基づいて手動で文を分割します。数千文で十分だと思います。次に、APIまたはコマンドラインを呼び出して、センテンススプリッターを再トレーニングします。これで完了です。

しかし、まず最初に、前のスレッドで述べたように、理解する必要があることの1つは、「最初にタスクを明確に定義する必要があります。正確には、「文」の定義は何ですか?」

私は自分のプロジェクトであるDishesMapでStanfordNLPとOpenNLPを使用しています。これは、NLPと機械学習に基づくおいしい料理の発見エンジンです。彼らは非常にうまく機能しています!

于 2013-07-18T18:23:00.920 に答える
0

同様のケースで、私が行ったことは、テキストを分割する場所に基づいて、テキストを異なる文に分割しました(新しい行で区切ります)。あなたの場合のように、それは箇条書きで始まるテキスト(または正確に最後に「改行タグ」が付いたテキスト)です。これにより、同じHTMLを使用している場合に発生する可能性のある同様の問題も解決されます。そして、それらを異なる行に分割した後、文を検出するために個々の行を送信できます。これはより正確です。

于 2011-12-12T11:23:31.320 に答える