gpt4 book ai didi

python - 使用正则表达式标记化的 NLP 词干化和词形还原

转载 作者:行者123 更新时间:2023-12-05 08:50:11 25 4
gpt4 key购买 nike

定义一个名为 performStemAndLemma 的函数,它接受一个参数。第一个参数 textcontent 是一个字符串。函数定义代码 stub 在编辑器中给出。执行以下指定任务:

1.标记textcontent中给出的所有单词。该词应包含字母或数字或下划线。将标记化的单词列表存储在 tokenizedwords 中。 (提示:使用 regexp_tokenize)

  1. 将所有单词转换为小写。将结果存储到变量 tokenizedwords 中。

  2. 从唯一的tokenizedwords 集合中删除所有停用词。将结果存储到变量 filteredwords 中。 (提示:使用停用词语料库)

  3. 使用 PorterStemmer 对 filteredwords 中的每个词进行词干处理,并将结果存储在列表 porterstemmedwords 中。

  4. 使用 LancasterStemmer 对 filteredwords 中的每个单词进行词干处理,并将结果存储在列表 lancasterstemmedwords 中。

  5. 使用 WordNetLemmatizer 对 filteredwords 中的每个单词进行词形还原,并将结果存储在列表 lemmatizedwords 中。

从函数返回 porterstemmedwordslancasterstemmedwordslemmatizedwords 变量。

我的代码:

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):
# Write your code here
import re
import nltk
from nltk.corpus import stopwords
from nltk import PorterStemmer, LancasterStemmer

pattern = r'\w*'
tokenizedwords = nltk.regexp_tokenize(textcontent, pattern, gaps=False)
tokenizedwords = [words for words in tokenizedwords if words !='']

uniquetokenizedwords = set(tokenizedwords)
tokenizedwords = [words.lower() for words in uniquetokenizedwords if words !='']

stop_words = set(stopwords.words('english'))
filteredwords = [words for words in tokenizedwords if words not in stop_words]

porterstemmedwords = nltk.PorterStemmer()
porterstemmedwords =[porterstemmedwords.stem(words) for words in filteredwords]

lancasterstemmedwords = nltk.LancasterStemmer()
lancasterstemmedwords =[lancasterstemmedwords.stem(words) for words in filteredwords]

wnl = nltk.WordNetLemmatizer()
lemmatizedwords = [wnl.lemmatize(word) for word in filteredwords ]

return porterstemmedwords, lancasterstemmedwords, lemmatizedwords

关于python - 使用正则表达式标记化的 NLP 词干化和词形还原,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62651893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com