定义一个名为performStemAndLemma
的函数,它接受一个参数。第一个参数textcontent
是一个字符串。编辑器中给出了函数定义代码存根。执行以下指定任务:
1.标记textcontent
中给出的所有单词。单词应该包含字母、数字或下划线。将标记化的单词列表存储在tokenizedwords
中。(提示:使用regexp\u标记化)
将所有单词转换成小写。将结果存储到变量tokenizedwords
中
从唯一的tokenizedwords
集中删除所有停止字。将结果存储到变量filteredwords
中。(提示:使用stopwords语料库)
用PorterStemmer将filteredwords
中出现的每个单词加上词干,并将结果存储在列表porterstemmedwords
中
使用Lancaster词干分析器对filteredwords
中的每个单词进行词干分析,并将结果存储在列表lancasterstemmedwords
中
使用WordNetLemmatizer对filteredwords
中的每个单词进行线性化,并将结果存储在列表lemmatizedwords
中
从函数返回porterstemmedwords
、lancasterstemmedwords
、lemmatizedwords
变量
我的代码:
from nltk.corpus import stopwords
def performStemAndLemma(textcontent):
# Write your code here
#Step 1
tokenizedword = nltk.tokenize.regexp_tokenize(textcontent, pattern = '\w*', gaps = False)
#Step 2
tokenizedwords = [x.lower() for x in tokenizedword if x != '']
#Step 3
unique_tokenizedwords = set(tokenizedwords)
stop_words = set(stopwords.words('english'))
filteredwords = []
for x in unique_tokenizedwords:
if x not in stop_words:
filteredwords.append(x)
#Steps 4, 5 , 6
ps = nltk.stem.PorterStemmer()
ls = nltk.stem.LancasterStemmer()
wnl = nltk.stem.WordNetLemmatizer()
porterstemmedwords =[]
lancasterstemmedwords = []
lemmatizedwords = []
for x in filteredwords:
porterstemmedwords.append(ps.stem(x))
lancasterstemmedwords.append(ls.stem(x))
lemmatizedwords.append(wnl.lemmatize(x))
return porterstemmedwords, lancasterstemmedwords, lemmatizedwords
但该计划仍不能很好地发挥作用。未通过2个测试用例。突出显示上述代码中的错误,并提供相同的替代解决方案
在如上定义函数之后,只需导入
stopwords
。代码的其余部分保持不变下面的方法为我清除了所有的测试用例
相关问题 更多 >
编程相关推荐