python - 停用词删除和词形还原后的空白
问题描述
处理前的文本看起来像这样
0 [It's, good, for, beginners] positive
1 [I, recommend, this, starter, Ukulele, kit., I... positive
经过stopword
去除和词形还原的预处理
nlp = spacy.load('en', disable=['ner', 'parser']) # disabling Named Entity Recognition for speed
def cleaning(doc):
txt = [token.lemma_ for token in doc if not token.is_stop]
if len(txt) > 2:
return ' '.join(txt)
brief_cleaning = (re.sub("[^A-Za-z']+", ' ', str(row)).lower() for row in df3['reviewText'])
txt = [cleaning(doc) for doc in nlp.pipe(brief_cleaning, batch_size=5000, n_threads=-1)]
结果是这样的
0 ' good ' ' ' ' beginner ' positive
1 ' ' ' recommend ' ' ' ' starter ' ' ukulele ... positive
如您所见,' '
结果中有很多,这是什么原因造成的?我假设它是导致它的return ' '.join(txt)
and re.sub("[^A-Za-z']+", ' '
,但是如果我删除了 space 或 use return (txt)
,它根本不会删除任何stopword
内容或进行词形还原。
这些空白空间会引起麻烦,还是有必要,因为我正在做二元和word2vec
之后。
如何修复它并将结果返回为' recommend ' ' starter ' ' ukulele ' ' kit ' ' need ' ' learn ' ' ukulele '
?
解决方案
推荐阅读
- python - 每个服务器前缀
- node.js - 如何在 Windows 中设置 node.js 命令提示符的默认工作目录?
- python - SyntaxError - 冒泡排序
- node.js - 如何在reactJS中初始化未知长度的数组状态?
- sparkpost - Sparkpost API:每个收件人使用不同模板的批量邮件
- python-3.x - 将数据框中的时间戳转换为python中的日期和时间
- selenium - gradle、cucumber 和 selenium 的警告
- sql - 从 Bigquery 中的另一个表运行 Where 子句
- laravel - Laravel 护照设置会话
- java - Avro 能否返回对对象的引用而不是对象