我已经尝试过PorterStemmer和Snowball,但两个都不能用于所有单词,缺少一些非常常见的单词.
我的测试词是:" 猫跑仙人掌仙人掌仙人掌社区社区 ",两者都不到一半.
也可以看看:
我什么时候使用?
另外...... NLTK的词形还原取决于词性?如果它是不是更准确?
我想要一个python库函数,它可以翻译/转换不同的语音部分.有时它应该输出多个单词(例如"编码器"和"代码"都是动词"代码"中的名词,一个是主题,另一个是对象)
# :: String => List of String
print verbify('writer') # => ['write']
print nounize('written') # => ['writer']
print adjectivate('write') # => ['written']
Run Code Online (Sandbox Code Playgroud)
我主要关心动词<=>名词,我想写的笔记程序.即我可以写"咖啡因拮抗A1"或"咖啡因是A1拮抗剂"和一些NLP,它可以发现它们的意思相同.(我知道这并不容易,并且它将需要NLP解析并且不仅仅是标记,但我想破解原型).
类似的问题... 将形容词和副词转换为名词形式 (这个答案仅限于根POS.我想在POS之间进行.)
ps称为语言学转换http://en.wikipedia.org/wiki/Conversion_%28linguistics%29
我尝试了正则表达式,但我得到了数百个不相关的令牌.我只对"玩"词干感兴趣.这是我正在使用的代码:
import nltk
from nltk.book import *
f = open('tupac_original.txt', 'rU')
text = f.read()
text1 = text.split()
tup = nltk.Text(text1)
lowtup = [w.lower() for w in tup if w.isalpha()]
import sys, re
tupclean = [w for w in lowtup if not w in nltk.corpus.stopwords.words('english')]
from nltk import stem
tupstem = stem.RegexpStemmer('az$|as$|a$')
[tupstem.stem(i) for i in tupclean]
Run Code Online (Sandbox Code Playgroud)
以上结果是;
['like', 'ed', 'young', 'black', 'like'...]
Run Code Online (Sandbox Code Playgroud)
我正在尝试清理.txt文件(全部小写,删除停用词等),将一个单词的多个拼写规范化为一个并执行频率dist/count.我知道该怎么做FreqDist,但有任何关于堵塞的问题的建议吗?
我正在用 Python 编写一个文本分类系统。这就是我正在做的标准化每个标记的事情:
lem, stem = WordNetLemmatizer(), PorterStemmer()
for doc in corpus:
for word in doc:
lemma = stem.stem(lem.lemmatize(word))
Run Code Online (Sandbox Code Playgroud)
我不想仅仅进行词形还原的原因是因为我注意到它WordNetLemmatizer没有处理一些常见的词形变化。例如,对于副词来说,lem.lemmatize('walking')returns walking。
同时进行词干提取和词形还原是否明智?还是多余的?研究人员通常会选择其中之一,而不是两者都做?
我正在尝试预处理单词以删除诸如“un”和“re”之类的常见前缀,但是 nltk 的所有常见词干分析器似乎都完全忽略了前缀:
from nltk.stem import PorterStemmer, SnowballStemmer, LancasterStemmer
PorterStemmer().stem('unhappy')
# u'unhappi'
SnowballStemmer('english').stem('unhappy')
# u'unhappi'
LancasterStemmer().stem('unhappy')
# 'unhappy'
PorterStemmer().stem('reactivate')
# u'reactiv'
SnowballStemmer('english').stem('reactivate')
# u'reactiv'
LancasterStemmer().stem('reactivate')
# 'react'
Run Code Online (Sandbox Code Playgroud)
删除常见前缀和后缀不是词干分析器工作的一部分吗?是否有另一个词干分析器可以可靠地做到这一点?
为什么波特词干算法在线
http://text-processing.com/demo/stem/
干fried到fri而不是fry?
我记不起ied英语中任何以过去时结尾且主格形式以 结尾的单词i。
这是一个错误吗?
我需要找到一个与关键字提取器的所有相关单词匹配的公共词根。
如何使用python nltk lemmatizer将单词转换为相同的词根?
python nltk lemmatizer在使用Speech(pos)标签参数的一部分时为“ generalized”和“ generalizing”给出“ generalize”,而不是为“ generalization”。
有没有办法做到这一点?
我注意到在应用 Porter 词干(来自 NLTK 库)后,我得到了奇怪的词干,例如"cowardli"或"contrari"。对我来说,它们根本不像茎。
没关系吗?难道是我哪里弄错了?
这是我的代码:
string = string.lower()
tokenized = nltk.tokenize.regexp_tokenize(string,"[a-z]+")
filtered = [w for w in tokenized if w not in nltk.corpus.stopwords.words("english")]
stemmer = nltk.stem.porter.PorterStemmer()
stemmed = []
for w in filtered:
stemmed.append(stemmer.stem(w))
Run Code Online (Sandbox Code Playgroud)
这是我用于处理http://pastebin.com/XUMNCYAU的文本(Dostoevsky 的“罪与罚”一书的开头)。
目前,我将创建一个基于机器学习的自动映射类别的代码。
在那之前我会做自然语言处理。
有几个单词列表。
sent ='The laughs you two heard were triggered
by memories of his own high j-flying
moist moisture moisturize moisturizing '.lower().split()
Run Code Online (Sandbox Code Playgroud)
我做了以下代码。我参考了这个网址。NLTK:词形还原器和 pos_tag
from nltk.tag import pos_tag
from nltk.tokenize import word_tokenize
from nltk.stem import WordNetLemmatizer
def lemmatize_all(sentence):
wnl = WordNetLemmatizer()
for word, tag in pos_tag(word_tokenize(sentence)):
if tag.startswith("NN"):
yield wnl.lemmatize(word, pos='n')
elif tag.startswith('VB'):
yield wnl.lemmatize(word, pos='v')
elif tag.startswith('JJ'):
yield wnl.lemmatize(word, pos='a')
words = ' '.join(lemmatize_all(' '.join(sent)))
Run Code Online (Sandbox Code Playgroud)
结果值如下所示。
laugh heard be trigger memory own high j-flying moist moisture moisturize …Run Code Online (Sandbox Code Playgroud)