如何使用 Spacy 按句子分解文档

新手上路,请多包涵

如何将文档(例如,段落、书籍等)分解为句子。

例如, "The dog ran. The cat jumped" 变成 ["The dog ran", "The cat jumped"] spacy?

原文由 Ulad Kasach 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

最新的答案是这样的:

 from __future__ import unicode_literals, print_function
from spacy.lang.en import English # updated

raw_text = 'Hello, world. Here are two sentences.'
nlp = English()
nlp.add_pipe(nlp.create_pipe('sentencizer')) # updated
doc = nlp(raw_text)
sentences = [sent.string.strip() for sent in doc.sents]

原文由 npit 发布,翻译遵循 CC BY-SA 4.0 许可协议

回答

import spacy
nlp = spacy.load('en_core_web_sm')

text = 'My first birthday was great. My 2. was even better.'
sentences = [i for i in nlp(text).sents]

附加信息

这假设您已经在系统上安装了模型“en_core_web_sm”。如果没有,您可以通过在终端中运行以下命令轻松安装它:

 $ python -m spacy download en_core_web_sm

(有关所有可用模型的概述,请参见 此处。)

根据您的数据,这可能会比仅使用 spacy.lang.en.English 产生更好的结果。一个(非常简单的)比较示例:

 import spacy
from spacy.lang.en import English

nlp_simple = English()
nlp_simple.add_pipe(nlp_simple.create_pipe('sentencizer'))

nlp_better = spacy.load('en_core_web_sm')

text = 'My first birthday was great. My 2. was even better.'

for nlp in [nlp_simple, nlp_better]:
    for i in nlp(text).sents:
        print(i)
    print('-' * 20)

输出:

 >>> My first birthday was great.
>>> My 2.
>>> was even better.
>>> --------------------
>>> My first birthday was great.
>>> My 2. was even better.
>>> --------------------

原文由 KB_ 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题