Chatbot: 会話ロボットを理解する3(前処理とTF-IDF Approach), nltk

次の続きです。

 

Chatbot: 会話ロボットを理解する1(概要), nltk

 

Chatbot: 会話ロボットを理解する2(準備), nltk

 

Parul Pandey氏の次の文書を学びます。

 

Building a Simple Chatbot from Scratch in Python (using NLTK)

 

 

 

I.データの前処理(Text Pre-Processing with NLTK)

 

1.Converting texts into uppercase or lowercase

 

文字を全て大文字か小文字に統一します。ですから、ユーザーが大文字で入力しても小文字で入力しても関係なくなります。

 

2.Tokenization

 

文字情報そのままでは処理できないので、NLTKで扱える記号、つまり、トークンにします。NLTKには英語のトークナイザーが含まれています。

 

Rmoving Noise:集計上意味のない記号や文字を除きます。

 

Rmoving Stop words:集計上利用しない文字を除きます。例えば次のような単語です。つまり、ユーザーがこれらの単語を書いても書かなくても関係なくなります。

 

‘the’,’a’,’an’,’and’,’but’,’if’,’or’,’because’,’as’,’what’,’which’,’this’,’that’,’these’,’those’,’then’,‘just’,’so’,’than’,’such’,’both’,’through’,’about’,’for’,’is’,’of’,’while’,’during’,’to’,’What’,’Which’,‘Is’,’If’,’While’,’This’

 

StemmingとLimmatization:文法上の活用形はすべて同一の語とします。つまり、単語の活用を間違えても関係なくなります。

 

例えば、 “running” や“ran” は”run”に、 “better” や “good”も同じ語として扱います。

 

3.Bag of Wordsをベクトルに

 

前処理されたデータは単なる語の集まり、Bag of Wordsです。これをを集計可能なベクトルに変換します。つまり、数字の列にして計算できるようにします

例えば、{learning, is, the, not, greeat}の辞書を得たとして、”Learning is great.”の文は、(1,1,0,01)のベクトルとして集計します。

 

II.TF-IDF Approach「希少語優先アプローチ」

 

TF-IDFは語の持つ情報量を評価するものです。多くのキュメントに出現する語は価値が高く、逆にあまり出現しないものは価値がが高いとする考えに基づいて、語を評価、つまり数値化します。

たとえば、「毎月勤労統計不正」をgoogleで検索した場合、「毎月」、「勤労」、「統計」、「不正」と分けてそれぞれの語を均等に評価するのではなく、「勤労」や「統計」というふだんあまり使わない語の情報量を高く評価して優先して検索すると、求める情報を含むページを選び出せる確率が高くなるというわけです。

TF-IDF weightはTF*IDFで表されます。TFとIDEの式は簡単です。

下の図の末尾のExcampleの例です:

100語の文書に”Phone”が5個みつかりました。出現率は5/100=0.05です。

手元の10,000,000文書をチェックしたら、1,000文書に”Phone”が含まれることがわかりました。

比較的出現数の少ない語、つまり、情報価値の高い語だという評価を与えて、次のようにTf-IDFは0.20と算出されます。

IF-IDF=0.05*4=0.20

 

Please follow and like us:
error

About shibatau

I was born and grown up in Kyoto. I studied western philosophy at the University and specialized in analytic philosophy, especially Ludwig Wittgenstein at the postgraduate school. I'm interested in new technology, especially machine learning and have been learning R language for two years and began to learn Python last summer. Listening toParamore, Sia, Amazarashi and MIyuki Nakajima. Favorite movies I've recently seen: "FREEHELD". Favorite actors and actresses: Anthony Hopkins, Denzel Washington, Ellen Page, Meryl Streep, Mia Wasikowska and Robert DeNiro. Favorite books: Fyodor Mikhailovich Dostoyevsky, "The Karamazov Brothers", Shinran, "Lamentations of Divergences". Favorite phrase: Salvation by Faith. Twitter: @shibatau

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.