自然语言处理 |过滤无关紧要的词
短语中使用的许多词都是微不足道的,没有任何意义。例如——英语是一门学科。在这里,“English”和“subject”是最重要的词,“is”、“a”几乎没用。即使我们去掉无关紧要的词——('is','a'),英语主语和主语英语也具有相同的含义。使用 nltk,我们可以通过查看词性标签来删除无关紧要的单词。为此,我们必须决定哪些词性标签是重要的。
代码#1:filter_insignificant() 类过滤掉无关紧要的词
def filter_insignificant(chunk,
tag_suffixes =['DT', 'CC']):
good = []
for word, tag in chunk:
ok = True
for suffix in tag_suffixes:
if tag.endswith(suffix):
ok = False
break
if ok:
good.append((word, tag))
return good
filter_insignificant()
通过遍历块中的标记词来检查该标记是否以 tag_suffixes 结尾(对于每个标记)。如果 tag 以任何tag_suffixes
结尾,则跳过标记的单词。否则,如果标签没问题,则将标签词附加到返回的新好块中。
代码 #2:在短语上使用filter_insignificant()
from transforms import filter_insignificant
print ("Significant words : \n",
filter_insignificant([('the', 'DT'),
('terrible', 'JJ'), ('movie', 'NN')]))
输出 :
Significant words :
[('terrible', 'JJ'), ('movie', 'NN')]
我们可以使用filter_insignificant()
传递不同的标签后缀。在下面的代码中,我们讨论的是代词和所有格词,例如 your, you, theirs 和 theirs 是不好的,但是 DT 和 CC 词是可以的。标记后缀将是 PRP 和 PRP$:代码#3:使用filter_insignificant()
我们自己的标签后缀
from transforms import filter_insignificant
# choosing tag_suffixes
print ("Significant words : \n",
filter_insignificant([('your', 'PRP$'),
('book', 'NN'), ('is', 'VBZ'),
('great', 'JJ')],
tag_suffixes = ['PRP', 'PRP$']))
输出 :
Significant words :
[('book', 'NN'), ('is', 'VBZ'), ('great', 'JJ')]