前回と同じくprocessEmailに取り組みます。
引き続きprocessEmail.mの解読を続けます。
ここには「Word Stemming」と「Removal of non-words」の機能が入ってそうです。
試しにWhileのループ文を外してこの箇所を実行してみました。
anyoneがなくなりました!
strがanyoneになったようです。
最初の式はEmailを1単語ずつPickUpしてくれるようですね。
2つ目の式はそのstrが記号を含んでいたら削除するという式でしょうか。
while ループを作って試してみます。
結果です。
想像した通り、portal?もportalで「?」 がとれました!
こういうときうれしいですね!
「Removal of non-words」の部分がクリアになりました。
そして1語1語の分解にも成功しました!
これ大きいです!
******************************************************************************
やる内容;Email Sampleにある単語がvocabulary listにあれば
index情報を付加してWord_indicesに入れる
******************************************************************************
最終的に課題はこれ↑なのですが、どうやって1語1語分解するのだろうと
思っていたのです!
これで自動的に1語1語に分解されるのはわかったので、
strに式を設定すればいいとわかりました。
(出典;『Coursera Machine Learning』 By Mr. Andrew Ng)
だとすると、この意味も分かってきた気がします。
str1,str2が必要でしたが、これもさっきの結果に表示されている通り、
strは2個セットで表示されています。
だいぶ、見えてきました。
次は「Word Stemming」の箇所です。
先ほどの式に「Word Stemming」箇所を追加します。
結果です。
strが3列になって、見事にWord Stemmingされています!
ちなみに「porterStemmer」はアルゴリズムですね↓
ちなみに「strtrim」は空白を消すfunctionですね↓
さてようやく課題にたどり着きました。
******************************************************************************
やる内容;Email Sampleにある単語がvocabulary listにあれば
index情報を付加してWord_indicesに入れる
******************************************************************************
ということは、strがvocabulayListにあるかどうか確認して、
あるんだったらindex情報を取り出してWord_indicesに入れるということですね。
(出典;『Coursera Machine Learning』 By Mr. Andrew Ng)
ヒントがあります。
word_indicesの方はほとんど答え書いてるような気がします。
vocabList(XX)でXXにIndexを入れると文字列が出てくるので、
それをstrとマッチさせればできると思います。
具体的にはvocabListは1899個なので
1899を順番にStrと一致するかどうか試していき、
一致した場合はその番号をword_indicesに入れるという方法です。
実行しましたがstr = vocabList(i)のとこでエラーになりますorz
vocabList(i)が変な形になります。右だけ取り出せればできそうなんですが。。。
そうか、ここでstrcmp(str1,str2)の登場な気がします。
イコールかどうかを見極めてくれる式というヒントでした。
なんか脱出ゲームをやってるような感じです笑
というわけで式を修正しました↓
結果です
できたっぽいですね。
Submitしたら正解でした!
宿題①you re」--> (XX)-->「your」の短縮宿題②l=0が繰り越しですね。
<---そういえばいつ実現できたんだろう。
次回みてみます。
宿題②l=0が繰り越しですね。<--これわかんないですね。諦めます。
それでは次回はEmailのClasifierを作る課題に取り組みます。