私はすでに同様の質問をしましたが、私には大きな制約があることに気づきました。タグ(キーワード)を生成するためにユーザーツイートなどの小さなテキストセットに取り組んでいます。
そして、受け入れられた提案(ポイントごとの相互情報アルゴリズム)は、より大きなドキュメントで機能することを意図しているようです。
この制約(小さなテキストセットでの作業)を使用して、タグを生成するにはどうすればよいですか?
よろしく
私はすでに同様の質問をしましたが、私には大きな制約があることに気づきました。タグ(キーワード)を生成するためにユーザーツイートなどの小さなテキストセットに取り組んでいます。
そして、受け入れられた提案(ポイントごとの相互情報アルゴリズム)は、より大きなドキュメントで機能することを意図しているようです。
この制約(小さなテキストセットでの作業)を使用して、タグを生成するにはどうすればよいですか?
よろしく
マルチワードタグの2段階アプローチ
すべてのツイートを1つの大きなドキュメントにプールしてから、ツイートのコレクション全体からn個の最も興味深いコロケーションを抽出できます。次に、戻って、各ツイートに発生するコロケーションでタグを付けることができます。このアプローチを使用すると、nはデータセット全体に対して生成されるマルチワードタグの総数になります。
最初の段階では、ここに掲載されているNLTKコードを使用できます。第2段階は、すべてのツイートに対する単純なforループで実行できます。ただし、速度が懸念される場合は、pyluceneを使用して、各コロケーションを含むツイートをすばやく見つけることができます。
シングルワードタグのツイートレベルPMI
ここでも提案されているように、単一の単語タグの場合、個々の単語とツイート自体のポイントごとの相互情報量を計算できます。
PMI(term, tweet) = log [ P(term, tweet) / (P(term)*P(tweet))
繰り返しになりますが、これは、特定のドキュメントでその用語に出くわしたときに、より大きなコレクションでその用語に出くわしたことにどれほど驚いたか(またはそれ以上)を大まかに示します。次に、ツイートで最も高いいくつかの用語でツイートにタグを付けることができますPMI
。
ツイートの一般的な変更
ツイートでタグ付けするときに行う可能性のある変更には、次のものがあります。
単語またはコロケーションは、他のツイートの特定の数または割合内で発生する場合にのみ、ツイートのタグとして使用してください。そうしないと、PMIは、1つのツイートで発生するが、他の場所では見られない奇妙な用語でツイートにタグを付ける傾向があります。たとえば、スペルミスや#@ $#@ $%!などのキーボードノイズです。
各ツイートの長さで使用されるタグの数をスケーリングします。より長いツイートのために2つまたは3つの興味深いタグを抽出できる可能性があります。ただし、2語の短いツイートの場合は、すべての単語とコロケーションを使用してタグ付けすることはおそらく望ましくありません。ツイートの長さを考慮して、抽出するタグの数について、さまざまなカットオフを試してみる価値はあります。
以前、SMSなどの小さなテキストコンテンツに対して、同じ行を2回繰り返すだけの方法を使用しました。驚いたことに、これは名詞が話題になる可能性のあるコンテンツに適しています。つまり、トピックになるために繰り返す必要はありません。