2011-09-29 10 views
6

検索用語のリストを「記入」するアルゴリズム(自然言語処理技術に依存していると思われます)を記述しようとしています。私が気付いていないこの種の名前がおそらくあります。この種の問題は何と呼ばれ、どのようなアルゴリズムが私に次のような振る舞いを与えますか?検索用語を入力するNLPアルゴリズム

入力:

docs = [ 
    "I bought a ticket to the Dolphin Watching cruise", 
    "I enjoyed the Dolphin Watching tour", 
    "The Miami Dolphins lost again!", 
    "It was good going to that Miami Dolphins game" 
    ], 
    search_term = "Dolphin" 

出力:

["Dolphin Watching", "Miami Dolphins"] 

それは基本的に「ドルフィン」はまったく表示された場合、それは事実上、常にどちらかのバイグラムで「イルカウォッチング」だか「マイアミのことを把握すべきですイルカ "。 Pythonのソリューションが好ましい

+0

イルカがバイグラム "イルカウォッチング"または "マイアミドルフィンズ"の一部であることをどのように知っていますか?それぞれのバイグラムの両方の単語が大文字になっているからですか?あるいは、あなたが望むバイグラムを含む別のリストを持っていますか? –

+0

@RobertHarvey:良いNLPアルゴリズムは[Miami Dolphins]を単語として解析できるはずです。 [Dolphin Watching]と同じです。それぞれのフレーズを質問として作成した場合のように考えるのは簡単です。 Q:「あなたはどんなツアーを楽しんでいましたか?」 A:[Dolphin Watching]ツアー、Q:誰がゲームを失ったのですか? A:[マイアミドルフィンズ]。あなたはそれを木に解析して、何が何に属するのかを調べる必要があります。簡単な問題ではありませんが、いくらか正確な結果を得ることができます。 – mpen

+0

@RobertHarvey私は特定の言葉のリストを持っているので、私はドルフィンがどこかにいなければならないことを知っています。 – Trindaz

答えて

6

"Dolphin"がまったく表示されていれば、実際には常にbigrams "Dolphin Watching"または "Miami Dolphins"のいずれかにあることがわかります。あなたはイルカがで発生collocationsことを確認したいよう

が鳴る。コロケーション発見のための様々な方法がありますが、最も人気のあるはその後、あなたのコーパスに用語の間point-wise mutual information(PMI)を計算して用語を選択することドルフィンの最高PMI。前に提案したsentiment analysis algorithmからPMIを覚えているかもしれません。

さまざまなコロケーション検出メソッドのPython実装は、NLTKにnltk.collocationsとして含まれています。この領域は、ある程度の深さでManning and Schütze's FSNLP(1999年現在でもこのトピックについては現在)に記載されています。

0

私はNatural Language Toolkitを大学のNLPクラスでうまく使いこなしました。私はそれがあなたが名詞であるかを判断し、それを木の中に解析するのを助けることができるいくつかのタグを持っていると思います。私はあまり覚えていないが、私はそこから始めるだろう。

関連する問題