import nltk
import string
from nltk.stem import PorterStemmer
stemmer = PorterStemmer()
def tokenize_and_stem(text):
tokens = nltk.tokenize.word_tokenize(text)
# strip out punctuation and make lowercase
tokens = [token.lower().strip(string.punctuation)
for token in tokens if token.isalnum()]
# now stem the tokens
tokens = [stemmer.stem(token) for token in tokens]
return tokens
tokenize_and_stem("Today (May 19,2016) is his only daughter's wedding.")
输出:
[“今天”,“可能”,“ 19”,“ 2016”,“是”,“嗨”,“翁里”,“女儿”,“星期三”]
,
您的代码
def tokenize_and_stem(text):
tokens = [sent for sent in nltk.sent_tokenize(text) for word in nltk.word_tokenize(text)]
filtered_tokens = [token for token in tokens if re.search('[a-zA-Z]',token)]
stems = stemmer.stem(filtered_tokens)
words_stemmed = tokenize_and_stem("Today (May 19,2016) is his only daughter's
wedding.")
print(words_stemmed)
如果self.stopwords或len(word)中的单词,错误将显示”“” word = word.lower()...
该错误不仅是因为.lower(),还因为长度
如果您尝试在不更改第5行的 filtered_tokens 的情况下运行它,
无需更改即可使用您的。
您不会有任何错误,但是输出将是这样的:
[““今天(2016年5月19日)是他唯一的女儿的婚礼。”,“今天(2016年5月19日)是他唯一的女儿的婚礼。”,“今天(2016年5月19日)是他唯一的女儿的婚礼。 ,“今天(2016年5月19日)是他唯一的女儿的婚礼。”,“今天(2016年5月19日)是他唯一的女儿的婚礼。”,“今天(2016年5月19日)是他唯一的女儿的婚礼。 ”,“今天(2016年5月19日)是他唯一的女儿的婚礼。”,“今天(2016年5月19日)是他唯一的女儿的婚礼。”,“今天(2016年5月19日)是他唯一的女儿的婚礼。” ,“今天(2016年5月19日)是他唯一的女儿的婚礼。”,“今天(2016年5月19日)是他唯一的女儿的婚礼。”,“今天(2016年5月19日)是他唯一的女儿的婚礼。”,“今天(2016年5月19日)是他唯一的女儿的婚礼。”,“今天(2016年5月19日)是他唯一的女儿的婚礼。”]
这是您的固定代码。
def tokenize_and_stem(text):
tokens = [word for sent in nltk.sent_tokenize(text) for word in nltk.word_tokenize(sent)]
filtered_tokens = [token for token in tokens if re.search('[a-zA-Z]',token)]
stems = [stemmer.stem(t) for t in filtered_tokens if len(t) > 0]
return stems
words_stemmed = tokenize_and_stem("Today (May 19,2016) is his only daughter's wedding.")
print(words_stemmed)
所以,我只有更改了第3行和第7行
本文链接:https://www.f2er.com/3064902.html