10

フリー テキストから場所を抽出するための推奨される方法は何ですか?

私が考えることができるのは、「words ... in location」のような正規表現ルールを使用することです。しかし、これよりも優れたアプローチはありますか?

また、国と都市の名前を含むルックアップ ハッシュ テーブル テーブルを用意し、テキストから抽出されたすべてのトークンをハッシュ テーブルのトークンと比較することも考えられます。

より良いアプローチを知っている人はいますか?

編集:ツイートのテキストから場所を抽出しようとしています。したがって、つぶやきの数が多いという問題も、方法の選択に影響を与える可能性があります。

4

3 に答える 3

11

ルールベースのアプローチはすべて失敗します (テキストが本当に「自由」である場合)。これには、正規表現、文脈自由文法、あらゆる種類のルックアップが含まれます...信じてください、私は以前にそこにいました:-)

この問題はNamed Entity Recognitionと呼ばれます。場所は、最も研究されている 3 つのクラスの 1 つです (Person と Organization と共に)。スタンフォード NLP には、非常に強力なオープン ソースの Java 実装があります: http://nlp.stanford.edu/software/CRF-NER.shtml

他のプログラミング言語での実装を簡単に見つけることができます。

于 2013-07-20T16:46:06.270 に答える
1

すべての有効な場所を並べ替えたリストに入れます。大文字と小文字を区別しない比較を計画している場合は、リストの大文字と小文字が既に正規化されていることを確認してください。

次に、入力テキスト内の個々の「単語」をループし、新しい単語が始まるたびに、場所リストで新しいバイナリ検索を開始するだけです。一致しない単語が見つかったら、単語全体をスキップして次の単語に進むことができます。

考えられる問題: "New York"、"3rd Street"、"People's Republic of China" などの複数単語の場所。ただし、 bsearch で複数の単語が含まれる結果が得られた場合 (可能です!) 、最初の新しい単語の位置を保存するだけで十分です。次に、完全な比較が失敗した場合 (おそらく数単語後)、開始した前の単語に関連して、この「次の」単語に戻るだけです。

「単語」とは何かについて: ロケーション リストを準備している間に、ロケーション内に表示される可能性のあるすべての文字のリストを作成します。このリストの文字を含むフレーズのみが有効な「単語」と見なされます。

于 2013-07-20T13:22:20.993 に答える
0

ツイートの流入速度は?それは完全な Twitter 消防ホースですか、それともいくつかのフィルタリング クエリですか? あなたが説明したものと同様の、もう少し洗練されたアプローチは、地名辞典に統合された NLP ツールを使用することです。Twitter のレートに追いつく NLP ツールはほとんどありません。NLP は、必要に応じて精度または再現率を調整して、地名辞典でのロックアップの実行を制限できます。Rosoka ( Rosoka Cloud through Amazon AWS) とGeoGravyを見ることをお勧めします。

于 2013-10-01T02:36:43.237 に答える