如何将文档(例如段落,书籍等)分解为句子。
例如,"The dog ran. The cat jumped"到["The dog ran", "The cat jumped"] 与spacy?
小智 17
在 spacy 3.0.1 中,他们改变了管道。
from spacy.lang.en import English
nlp = English()
nlp.add_pipe('sentencizer')
def split_in_sentences(text):
doc = nlp(text)
return [str(sent).strip() for sent in doc.sents]
Run Code Online (Sandbox Code Playgroud)
KB_*_*KB_ 12
回答
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]
Run Code Online (Sandbox Code Playgroud)
附加信息
这假设您已经在您的系统上安装了模型“en_core_web_sm”。如果没有,您可以通过在终端中运行以下命令轻松安装它:
$ python -m spacy download en_core_web_sm
Run Code Online (Sandbox Code Playgroud)
(有关所有可用模型的概述,请参见此处。)
根据您的数据,这可以带来比仅使用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)
Run Code Online (Sandbox Code Playgroud)
输出:
>>> My first birthday was great.
>>> My 2.
>>> was even better.
>>> --------------------
>>> My first birthday was great.
>>> My 2. was even better.
>>> --------------------
Run Code Online (Sandbox Code Playgroud)
npi*_*pit 10
最新的答案是这样的:
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]
Run Code Online (Sandbox Code Playgroud)
from __future__ import unicode_literals, print_function
from spacy.en import English
raw_text = 'Hello, world. Here are two sentences.'
nlp = English()
doc = nlp(raw_text)
sentences = [sent.string.strip() for sent in doc.sents]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3811 次 |
| 最近记录: |