如何创建标记和词干的函数

我的代码

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)

我收到此错误

AttributeError跟踪(最近一次通话)  在      13个返回茎      14 ---> 15 words_stemmed = tokenize_and_stem(“今天(2016年5月19日)是他唯一的女儿的婚礼。”)      16打印(words_stemmed)

tokenize_and_stem中的

(文本)       9
     10#阻止filtered_tokens ---> 11个茎= stemmer.stem(filtered_tokens)      12
     13个返回茎

/usr/local/lib/python3.6/dist-packages/nltk/stem/snowball.py词干(自身,单词)    1415    1416“”“ -> 1417字= word.lower()    1418    1419 if self.stopwords或len(word)中的单词

AttributeError:“ list”对象没有属性“ lower”

litao7777 回答:如何创建标记和词干的函数

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

大家都在问