nlp - 如何跳过换行符 /n 或没有意义的句子?
问题描述
我使用 spacy 来标记并尝试从文本子集中获取一些单词统计信息,但它也会打印新行 \n 和短句或没有意义的句子。我该如何摆脱这些?
nlp = spacy.load("en_core_web_md")
def describe_sentence_stats(text):
doc = nlp(text)
sent_df = pd.DataFrame()
for i, sent in enumerate(doc.sents):
sent_df.loc[i, 'sentence'] = sent.text
sent_df.loc[i, 'num_words'] = len([token for token in sent])
return sent_df
sentences = describe_sentence_stats(example_text)
我想摆脱这些类型的输出:
解决方案
这是一个垃圾进,垃圾出的案例。根据您的输出,您的输入有如下部分:
l
i i
1 i
1 i i i i i
这很奇怪。您应该在将文本提供给 spaCy 之前对其进行预处理,方法是删除太短的行,或者具有 < 5 个不同字符的行,或者空格数是字符数的 50% 等。
当您将文本提供给 spaCy 时,它会将输入视为不可侵犯的,并且永远不会丢弃它的任何部分。结果,即使是像那些行这样的“奇怪的垃圾”也必须在某个句子中并以标记的形式出现。
有时在 spaCy 本身中过滤类似的东西可能更容易,但在前面的步骤中通常更容易做到。在您的示例中,由于问题文本似乎在孤立的行中,因此我绝对建议您尝试进行预处理。
推荐阅读
- node.js - 安装 firebase-admin 的问题(window 10 一个 Linux 平台)
- c++ - xyx空间中的Octomap(八叉树)坐标
- php - Laravel DB 查询在服务器中不工作但在本地主机中运行良好
- python - 如何从 python 中的输出字典中删除项目?
- ssrs-2008 - Code.Grandtotal() 变量在 SSRS 的新页面上重置
- angular - Angular DecimalPipe 转换在 Firefox 中不起作用
- java - 托管解决方案中的 WebServices
- javascript - 信号器不活动超时
- .net - .Net 发布数据库项目和导入失败
- c# - MVVM 使用 Caliburn.Micro 更新 ComboBox SelectedItem 的 ListView