Python 使用正则表达式标记化的NLP词干分析和柠檬化
定义一个名为performStemAndLemma的函数,该函数接受一个参数。第一个参数textcontent是一个字符串。编辑器中给出了函数定义代码存根。执行以下指定任务: 1.标记textcontent中给出的所有单词。单词应该包含字母、数字或下划线。将标记化单词列表存储在标记化单词中。提示:使用regexp\u标记化 将所有单词转换成小写。将结果存储到变量tokenizedwords中 从唯一的tokenizedwords集中删除所有停止字。将结果存储到变量filteredwords中。提示:使用stopwords语料库 使用PorterStemmer在filteredwords中为每个单词添加词干,并将结果存储在porterstemmedwords列表中 使用Lancaster词干分析器在filteredwords中为每个单词添加词干,并将结果存储在Lancaster词干字列表中 使用WordNetLemmatizer对filteredwords中的每个单词进行线性化,并将结果存储在列表lemmatizedwords中 从函数中返回porterstemmedwords、LancasterStemedWords、lemmatizedwords变量 我的代码:Python 使用正则表达式标记化的NLP词干分析和柠檬化,python,python-3.x,nlp,nltk,Python,Python 3.x,Nlp,Nltk,定义一个名为performStemAndLemma的函数,该函数接受一个参数。第一个参数textcontent是一个字符串。编辑器中给出了函数定义代码存根。执行以下指定任务: 1.标记textcontent中给出的所有单词。单词应该包含字母、数字或下划线。将标记化单词列表存储在标记化单词中。提示:使用regexp\u标记化 将所有单词转换成小写。将结果存储到变量tokenizedwords中 从唯一的tokenizedwords集中删除所有停止字。将结果存储到变量filteredwords中。提
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个测试用例。突出显示上述代码中的错误,并提供相同的替代解决方案
def performStemAndLemma(textcontent):
from nltk.corpus import stopwords
在如上定义函数后,只需导入stopwords。代码的其余部分保持不变
在如上定义函数后,只需导入stopwords。代码的其余部分保持不变。
实际上,预期输出是把大写和小写的单词看作分开的令牌。因此,在将所有单词转换为小写之前,应该先获取所有唯一的单词。我希望下面的代码可以工作
从nltk.corpus导入停止词 def performStemAndLemmatextcontent: 在这里编写代码 第一步 tokenizedword=nltk.regexp\u tokenizetextcontent,pattern=r'\w*',gaps=False 步骤2 tokenizedwords=[y代表tokenizedwords中的y,如果y!=] unique_tokenizedwords=settokenizedwords tokenizedwords=[x.在唯一的x中,x的值较低。\u如果x!=] 步骤3 unique_tokenizedwords=settokenizedwords stop_words=setstopwords.words'english' filteredwords=[] 对于标记化单词中的x: 如果x不在“停止”字中: filteredwords.appendx 步骤4、5、6 ps=nltk.stem.PorterStemmer ls=nltk.stem.LANCASTERSTEMM wnl=nltk.stem.WordNetLemmatizer porterstemmedwords=[] LancasterStemedWords=[] lemmatizedwords=[] 对于FilteredWord中的x: porterstemmedwords.appendps.stemx LancasterStemedWords.appendls.stemx lemmatizedwords.appendwnl.lemmatizex 返回porterstemmedwords、LancasterstemedWords、lemmatizedwords实际上,预期的输出是把大写和小写的单词看作分开的令牌。因此,在将所有单词转换为小写之前,应该先获取所有唯一的单词。我希望下面的代码可以工作 从nltk.corpus导入停止词 def performStemAndLemmatextcontent: 在这里编写代码 第一步 tokenizedword=nltk.regexp\u tokenizetextcontent,pattern=r'\w*',gaps=False 步骤2 tokenizedwords=[y代表tokenizedwords中的y,如果y!=] unique_tokenizedwords=settokenizedwords tokenizedwords=[x.在唯一的x中,x的值较低。\u如果x!=] 步骤3 unique_tokenizedwords=settokenizedwords stop_words=setstopwords.words'english' filteredwords=[] 对于标记化单词中的x: 如果x不在“停止”字中: filteredwords.appendx 步骤4、5、6 ps=nltk.stem.PorterStemmer ls=nltk.stem.LANCASTERSTEMM wnl=nltk.stem.WordNetLemmatizer porterstemmedwords=[] LancasterStemedWords=[] lemmatizedwords=[] 对于FilteredWord中的x: porterstemmedwords.appendps.stemx LancasterStemedWords.appendls.stemx lemmatizedwords.appendwnl.lemmatizex 返回porterstemmedwords、LancasterstemedWords、lemmatizedwords
下面的方法为我清除了所有的测试用例
import re
from nltk.corpus import stopwords
def performStemAndLemma(textcontent):
# Write your code here
lancaster = nltk.LancasterStemmer()
porter = nltk.PorterStemmer()
wnl = nltk.WordNetLemmatizer()
tokens2_3 = nltk.regexp_tokenize(textcontent, r'\w+')
stop_words = set(stopwords.words('english'))
tokenisedwords=[words for words in set(tokens2_3) if not words.lower() in stop_words ]
#print(tokenizedwords)
return [porter.stem(word.lower()) for word in set(tokenisedwords)],[lancaster.stem(word.lower()) for word in set(tokenisedwords)],[wnl.lemmatize(word.lower()) for word in set(tokenisedwords)]
下面的方法为我清除了所有的测试用例
import re
from nltk.corpus import stopwords
def performStemAndLemma(textcontent):
# Write your code here
lancaster = nltk.LancasterStemmer()
porter = nltk.PorterStemmer()
wnl = nltk.WordNetLemmatizer()
tokens2_3 = nltk.regexp_tokenize(textcontent, r'\w+')
stop_words = set(stopwords.words('english'))
tokenisedwords=[words for words in set(tokens2_3) if not words.lower() in stop_words ]
#print(tokenizedwords)
return [porter.stem(word.lower()) for word in set(tokenisedwords)],[lancaster.stem(word.lower()) for word in set(tokenisedwords)],[wnl.lemmatize(word.lower()) for word in set(tokenisedwords)]
def performStemAndLemmatextcontent:
在这里编写代码
进口稀土
导入nltk
从nltk.corpus导入停止词
从nltk进口PorterStemmer、Lancaster Stemmer
模式=r'\w*'
tokenizedwords=nltk.regexp_tokenizetextcontent,pattern,gaps=False
tokenizedwords=[tokenizedwords中的单词对应单词如果单词!=]
uniquetokenizedwords=settokenizedwords
tokenizedwords=[words.lower用于uniquetokenizedwords中的单词,如果单词!=]
stop_words=setstopwords.words'english'
filteredwords=[如果单词不在stop_单词中,则在标记化单词中单词对应单词]
porterstemmedwords=nltk.PorterStemmer
porterstemmedwords=[porterstemmedwords.stemwords用于过滤词中的词]
兰卡斯特
ords=nltk.LANCASTER词干分析器
LancasterStemedWords=[filteredwords中单词的LancasterStemedWords.stemwords]
wnl=nltk.WordNetLemmatizer
lemmatizedwords=[wnl.lemmatizedwords中逐字过滤]
返回porterstemmedwords、LancasterstemedWords、lemmatizedwords
def performStemAndLemmatextcontent:
在这里编写代码
进口稀土
导入nltk
从nltk.corpus导入停止词
从nltk进口PorterStemmer、Lancaster Stemmer
模式=r'\w*'
tokenizedwords=nltk.regexp_tokenizetextcontent,pattern,gaps=False
tokenizedwords=[tokenizedwords中的单词对应单词如果单词!=]
uniquetokenizedwords=settokenizedwords
tokenizedwords=[words.lower用于uniquetokenizedwords中的单词,如果单词!=]
stop_words=setstopwords.words'english'
filteredwords=[如果单词不在stop_单词中,则在标记化单词中单词对应单词]
porterstemmedwords=nltk.PorterStemmer
porterstemmedwords=[porterstemmedwords.stemwords用于过滤词中的词]
Lancaster词干分析器=nltk.Lancaster词干分析器
LancasterStemedWords=[filteredwords中单词的LancasterStemedWords.stemwords]
wnl=nltk.WordNetLemmatizer
lemmatizedwords=[wnl.lemmatizedwords中逐字过滤]
返回porterstemmedwords、LancasterstemedWords、lemmatizedwords
请详细说明你的问题。失败的测试用例有哪些?哪一步失败了?输入:上周我无意中去看了See's Candy,当时我正在商场里找电话修理,结果发现,See's Candy现在收费一美元——一整美元——即使是最简单的小糖果。我买了两个巧克力棒棒糖和两个巧克力焦糖杏仁。总成本是4美元左右。我的意思是,这些糖果很好吃,但让我们说实话:一个士力架是50美分。在这一美元/糖果的披露之后,我可能不会很快发现自己在梦幻般地回到See的糖果中。我的输出:【杏仁】、【背】、【酒吧】、【买的】、【糖果】、【糖果】、【分】、【分】、【分】、【charg】、【巧克力】、【糖果】、【成本】、【美元】、【梦意】、【偶数】、【fifti】、【找到】、【四个】、【满的】、【inadvert】、【最后一个】、【让】、【棒棒糖】、【看】、【商场】、【五月】、【吝啬】、【报价】、【per】、【手机】、【真的】、【“,”很快“,”tasti“,”thing“,”time“,”total“,”turn“,”two“,”wander“,”wee“,”week“,”God“]Porter对o/p进行排序,并查看candi出现两次预期输出:【杏仁】、【背】、【酒吧】、【买来的】、【糖果】、【糖果】、【焦糖】、【分】、【charg】、【巧克力】、【糖果】、【成本】、【美元】、【梦幻力】、【偶数】、【fifti】、【找到】、【四个】、【满】、【inadvert】、【最后一个】、【让】、【棒棒糖】、【look】、【look】、【商场】、【五月】、【平均】、【报价】、【per】、【手机】、【真实】、【修理n、tasti、thing、time、total、turn、two、wander、wee、week、go']波特阻止o/p see candi出现三次问题与请说明您的问题相同。失败的测试用例是什么?哪一步失败?您期望得到什么输出?输入:上周我无意中去了see的糖果店,我在商场找电话维修,结果发现,see的糖果现在收费一美元——一个完整的dollar——即使是他们最简单的小甜点。我买了两个巧克力棒棒糖和两个巧克力焦糖杏仁东西。总成本是四块钱左右。我的意思是,这些糖果很好吃,而且都很好吃,但让我们现实一点:一个士力架是50美分。在这一美元一块糖果的披露之后,我可能不会发现自己在梦幻般地回到我的身边我的输出:【杏仁】、【背】、【酒吧】、【买的】、【糖果】、【糖果】、【分】、【分】、【分】、【charg】、【巧克力】、【糖果】、【成本】、【美元】、【梦意】、【偶数】、【fifti】、【找到】、【四个】、【满的】、【inadvert】、【最后一个】、【让】、【棒棒糖】、【看】、【商场】、【五月】、【吝啬】、【报价】、【per】、【手机】、【真的】、【“,”很快“,”tasti“,”thing“,”time“,”total“,”turn“,”two“,”wander“,”wee“,”week“,”God“]Porter对o/p进行排序,并查看candi出现两次预期输出:【杏仁】、【背】、【酒吧】、【买来的】、【糖果】、【糖果】、【焦糖】、【分】、【charg】、【巧克力】、【糖果】、【成本】、【美元】、【梦幻力】、【偶数】、【fifti】、【找到】、【四个】、【满】、【inadvert】、【最后一个】、【让】、【棒棒糖】、【look】、【look】、【商场】、【五月】、【平均】、【报价】、【per】、【手机】、【真实】、【修理n、tasti、thing、time、total、turn、two、wander、wee、wee、week、Goed.波特阻止o/p见candi出现三次问题与当时相同我没有任何想法我也不知道