Python NLP:从自然语言字符串中删除奇怪单词/字符的有效方法

问题描述 投票:-1回答:1

我正在使用许多包含自然语言的字符串。

例如:

s1 = "good day sir r please send morning text wa x x kind jennifer hardy directory mary advertisement estate west t f marcus peter"

从那开始,我要删除名称(詹妮弗,哈迪,马库斯,彼得)以及序列(r,wa,x,t,f)。

这样结果将类似于

s = "good day sir please send morning text kind directory advertisement estate west"

我已经尝试了一些nltk程序包,但不幸的是结果并不理想:

import nltk
from nltk import word_tokenize

names = nltk.corpus.names.words()
words = nltk.corpus.words.words()

s1_tok = word_tokenize(s1)

filtered_s1 = [w for w in raw_body if w in words and w not in names]

print(" ".join(filtered_s1))

返回

'good day sir r please send morning text wa x x kind hardy directory mary advertisement estate west t f peter'

因此某些元素已被删除,但并非全部。同样,this post不能解决我的问题(执行类似操作)。我考虑过使用棕色语料库:

from nltk.corpus import brown

brown_corp = brown.words()

filtered_s1 = [w for w in s1_tok if w in brown_corp]

但是这需要很长时间。我有什么想念的吗?有没有一种更聪明的方法可以有效地解决我的问题,理想情况下无需使用RegEx?]

编辑:在这里错误地复制了我的代码,使用了单词而不是句号。

python string nlp nltk corpus
1个回答
0
投票

这会更快:

brown_corp = set( brown.words() )

filtered_s1 = ( w for w in s1_tok if w in brown_corp )
© www.soinside.com 2019 - 2024. All rights reserved.