我是新來的python和書中的例子練習。 我可以幹一個字:通過Porter Stemmer運行一個文件
>>> from nltk.stem import PorterStemmer
>>> stemmer=PorterStemmer()
>>> stemmer.stem('programming')
'program'
但通過波特詞幹我不能例如運行一個文本文件的第一個50個字。
編輯:有沒有其他方式分裂()。 split()有時會給出錯誤的結果。
我是新來的python和書中的例子練習。 我可以幹一個字:通過Porter Stemmer運行一個文件
>>> from nltk.stem import PorterStemmer
>>> stemmer=PorterStemmer()
>>> stemmer.stem('programming')
'program'
但通過波特詞幹我不能例如運行一個文本文件的第一個50個字。
編輯:有沒有其他方式分裂()。 split()有時會給出錯誤的結果。
什麼
wholefile = open("text.txt", "r").read()
words = wholefile.split()
stems = [ stemmer.stem(word) for word in words]
編輯:實際上,講評海報給你相同,但更全面。用他的解決方案。
EDIT2:謝謝,falsetru :)
@ user2064809:編號falsetru的代碼是正確和完整的,我不打算抄襲它。 Falsetru決定發表評論,我尊重這一選擇。假如他的意圖是將他的代碼張貼在答案中,他/她可以自己做,而無需進一步的工作。 – 2015-02-08 18:18:19
它不正確。例如'_Melody_'應該轉換爲'Melodi'。但它仍然是'旋律'。有時候它不會從字尾中刪除's'。是因爲split()?這個問題嗎?! – user2064809 2015-02-09 19:11:06
不,分割只是將文件分割成單詞。 – 2015-02-10 11:25:33
'在開放( '/路徑/到/文件')字讀()分裂()。[50]:打印(stemmer.stem(字) )' – falsetru 2015-02-08 18:03:48
*請注意file.read().span()假定標記化; P – alvas 2015-02-09 13:22:31