データを使用してキーワードを取得するには、どのようにデータをマイニングしますか? ( "Jacob Smith"または "fence")テキストで使用されるキーワードを抽出するにはどうすればよいですか?
これを行うソフトウェアは既にありますか?半自動でも、 "the"、 "and"、 "or"などの単純な単語を除外することができれば、トピックにすばやく到達することができます。
データを使用してキーワードを取得するには、どのようにデータをマイニングしますか? ( "Jacob Smith"または "fence")テキストで使用されるキーワードを抽出するにはどうすればよいですか?
これを行うソフトウェアは既にありますか?半自動でも、 "the"、 "and"、 "or"などの単純な単語を除外することができれば、トピックにすばやく到達することができます。
一般的なアルゴリズムは次のように行くつもりされています
- Obtain Text - Strip punctuation, special characters, etc. - Strip "simple" words - Split on Spaces - Loop Over Split Text - Add word to Array/HashTable/Etc if it doesn't exist; if it does, increment counter for that word
最終結果は、テキスト内のすべての単語の頻度数です。これらの値をとって、単語の総数で割って、頻度のパーセンテージを得ることができます。それ以上の処理はあなた次第です。
また、Stemmingを見てみることにします。ステミングは単語を根本的に減らすために使用されます。例えば、going => go
,cars => car
など
このようなアルゴリズムは、スパムフィルタやキーワードインデックス作成などでよく使用されます。
これはNLPの未解決問題ですので、簡単な答えはありません。
クイックダーティーな "works-for-me"の私のお勧めは、topia.termextractです。
ヤフーには、低リコールで高精度のキーワード抽出サービス(http://developer.yahoo.com/search/content/V1/termExtraction.html)があります。言い換えれば、それはあなたに少数の高品質な用語を与えますが、あなたの文書の中の多くの言葉が欠けています。
Pythonには、topia.termextract(http://pypi.python.org/pypi/topia.termextract/)があります。それは比較的騒々しく、多くの偽のキーワードを提案しますが、使い方は簡単です。
Termine(http://www.nactem.ac.uk/software/termine/)は、比較的ノイズの多い英国のウェブサービスであり、多くの偽のキーワードを提案しています。しかし、topia.termextractよりも若干正確であるように見えます。 YMMV。
キーワードが多すぎる結果(たとえば、topia.termextractおよびtermine)を排除する1つの方法は、頻繁に発生する用語のボキャブラリを作成し、ボキャブラリにない提案された用語を投げ捨てることです。言い換えれば、あなたのコーパスを2回通過します:最初のパスは、各キーワードの頻度を数えます。 2回目のパスでは、あまりにも稀なキーワードを破棄します。
あなたがあなた自身を書きたい場合は、おそらく最高の導入をIBMに今ある公園で書かれている:
ここでは、いくつかのより多くの参照です:
あなたが使っている技術を指定していないので、シェルスクリプトも可能性があります。私はいつもAdvanced Bash-Scripting Guide(12-11)
に単語頻度分析例に感銘を受けてきた
例えば以下は、プロジェクト・グーテンベルクから本を取り出し、単語頻度分析「レポート」書き出し:
をwget http://www.gutenberg.org/files/20417/20417-8.txt -q -O- |
sed -e 's/\.//g' -e 's/\,//g' -e 's/ /\
/g' | tr 'A-Z' 'a-z' | sort | uniq -c | sort -nr > output.txt
「共通の」リストから言葉除外する拡張であるべき(と、...)など
用語抽出を行うことができますAlchemyと呼ばれるサービス、コンセプトタギングもあります、感情分析など。
私はそれをテストしましたが、商用ポリシー(もしあれば)はわかりません。 これらは、あらゆる種類のAPI(ほとんど)を提供します。
私は、Alchemyによって与えられた出力がJosephによって提案されたものと比較してノイズが少ないことを、私はもう覚えていません。
「錬金術」の外観非常に効果的です。しかし、オフラインに相当するものはありますか? Coz、lotsaデータを扱う場合、クラウドベースのソリューションはあまり効率が悪いようです。 – bdhar
非常に有望なPython Toolkitがあります(これまで私が経験したいくつかの評価から):http://www.nltk.org/ –
これまでNTLKをrecognize named entitiesに使用して成功しました。人々の名前や組織の名前を認識することが特に効果的です。
私は個人的にはマウイ(http://code.google.com/p/maui-indexer/)をお勧めします:KeAに依存していますが、さまざまな方法で拡張しています。それは訓練可能であり、RDF形式の用語を使用することができます。
あなたは - >ストリップの "シンプルな"単語リストをいくつか出すことができますか?私はそれらを見つけることができません –
自然言語では、 "シンプルな"言葉は最も頻繁にストップワードと呼ばれます。 http://en.wikipedia.org/wiki/Stop_words周りにはたくさんのstopwords.txtファイルがあります。 http://ir.dcs.gla.ac.uk/resources/linguistic_utils/stop_words – roy
英語のストップワードのリスト:http://xpo6.com/list-of-english-stop-words/ –