【发布时间】:2014-07-25 09:43:25
【问题描述】:
如何使用 Python 获得不同的单词形式。我想创建一个如下列表。
Work=['Work','Working','Works']
我的代码:
raw = nltk.clean_html(html)
cleaned = re.sub(r'& ?(ld|rd)quo ?[;\]]', '\"', raw)
tokens = nltk.wordpunct_tokenize(cleaned)
stemmer = PorterStemmer()
t = [stemmer.stem(t) if t in Words else t for t in tokens]
text = nltk.Text(t)
word = words(n)
Words = [stemmer.stem(e) for e in word]
find = ' '.join(str(e) for e in Words)
search_words = set(find.split(' '))
sents = ' '.join([s.lower() for s in text])
blob = TextBlob(sents.decode('ascii','ignore'))
matches = [map(str, blob.sentences[i-1:i+2]) # from prev to after next
for i, s in enumerate(blob.sentences) # i is index, e is element
if search_words & set(s.words)]
#return list(itertools.chain(' '.join (str(y).replace('& rdquo','').replace('& rsquo','') for y in matches))
return list(itertools.chain(*matches))
【问题讨论】:
-
你到底想做什么?你试过什么?
-
不知道有没有“reverse stemming”之类的东西。您最好的机会可能是获取一个大型语料库,对其进行词干化,然后记住词干对应的词干。
-
@pfnuesel 我知道如何词干。现在我想对词干分析器进行逆向工程。需要将词干限制为列表中的单词。所以我需要用各种词形的英语实际结尾来转换这个词。我试过但不行
-
@tobias_k 那么我可以将标记的词干限制在文本中的单词中吗?我不想阻止整个文本。我正在添加上面的代码
-
另外,知道你需要这个词形列表的用途可能会很有趣。也许有更好的方法。