Python 3.x pythonNLP。预处理文本

Python 3.x pythonNLP。预处理文本,python-3.x,machine-learning,nlp,nltk,Python 3.x,Machine Learning,Nlp,Nltk,我有一个关于预处理文本语料库的问题。 我想从文本中删除所有非字母数字符号。 我有一些方法,但它们并不能完全解决问题 我有一句话: A B C D ,5 .. AAA55AAA aaa.bbb.ccc 因此,我想得到: 'A' 'B' 'C' 'D' 'AAA' 'AAA' 'aaa' 'bbb' 'ccc' 我试过NLTK: from nltk.tokenize import word_tokenize tokens = word_tokenize(my_sentence) 但是它有方法i

我有一个关于预处理文本语料库的问题。 我想从文本中删除所有非字母数字符号。 我有一些方法,但它们并不能完全解决问题

我有一句话:

A B C D ,5 .. AAA55AAA aaa.bbb.ccc
因此,我想得到:

'A' 'B' 'C' 'D' 'AAA' 'AAA' 'aaa' 'bbb' 'ccc'
我试过NLTK:

from nltk.tokenize import word_tokenize
tokens = word_tokenize(my_sentence)
但是它有方法isalpha()

words = [word for word in tokens if word.isalpha()]
结果是:

'A', 'B', 'C', 'D'
所以这并不能解决我的问题。它删除所有包含非字母字符的单词

还有一个:

import string
table = str.maketrans('', '', string.punctuation)
sripped = [w.translate(table) for w in tokens]
但它只删除标点符号(和所有单词):

是否有使用NLTK或smth的解决方案。其他的还是解决问题的唯一方法——对每个单词使用正则表达式?(真的不想这样做,因为正则表达式可以工作很长时间,尤其是在大文件上)

你能用一个吗

它的功能:
[^a-zA-Z]
将匹配任何非字母字符,并且
sub()
将用空格替换它们

你能用一把吗

它的功能:
[^a-zA-Z]
将匹配任何非字母字符,并且
sub()
将用空格替换它们


是的,我能。正如我所说的“或者解决问题的唯一方法——对每个单词使用正则表达式”(我真的不想这样做,因为正则表达式可以工作很长时间,尤其是在大文件上)正则表达式可以工作很长时间,这就是为什么我要求一些NLP库提供任何其他解决方案,如果你不在每个单词上使用正则表达式,而是在整个文本上使用正则表达式呢?我想你误解了我的答案:你可以用一个200MB的字符串替换我使用的字符串(“AAA BB2BB”),如果你想要或更多,它不会比任何python标记器慢;不需要一个接一个地处理这个字符串我不确定是否理解?但这似乎与你的第一个问题不同,你应该发布一个新问题,你肯定会得到比我在评论中给你的更好的答案……是的,我可以。正如我所说的“或者解决问题的唯一方法——对每个单词使用正则表达式”(我真的不想这样做,因为正则表达式可以工作很长时间,尤其是在大文件上)正则表达式可以工作很长时间,这就是为什么我要求一些NLP库提供任何其他解决方案,如果你不在每个单词上使用正则表达式,而是在整个文本上使用正则表达式呢?我想你误解了我的答案:你可以用一个200MB的字符串替换我使用的字符串(“AAA BB2BB”),如果你想要或更多,它不会比任何python标记器慢;不需要一个接一个地处理这个字符串我不确定是否理解?但这似乎是一个不同于你的第一个问题,你应该张贴一个新的问题,你肯定会得到更好的答案,我可以给你在这里的评论。。。
'A', 'B', 'C', 'D', '5', '', 'AAA55AAA'
import re
rx = re.compile(r'[^a-zA-Z]')

res = rx.sub(" ", "AAA BB2BB")

print(res)  # >> AAA BB BB