我正在尝试使用来自space的四种替代方法中的两种来进行句子分割,它们在没有标点的短语上的表现似乎都一样糟糕。我试图利用这样的解决方案,文本的跨度是混合的,而不是日记(说话人日记化)。我的目标是识别句子边界,我认为语言解析功能可以很好地将短语分成单独的句子元素。
python version and spacy version with language models:
============================== Info about spaCy ==============================
spaCy version 3.4.3
Location /opt/homebrew/lib/python3.10/site-packages/spacy
Platform macOS-12.6-arm64-arm-64bit
Python version 3.10.8
Pipelines en_core_web_sm (3.4.1), en_core_web_trf (3.4.1)
我尝试了以下方法(在卸载和重新安装spaCy更新和适当的语言模型更新之后):
依赖解析器-根据文档(https://spacy.io/usage/linguistic-features#sbd),如果文本更接近通用新闻或web文本,这应该工作得很好。下面是我的例子:
nlp = spacy.load("en_core_web_sm")
doc = nlp("perfect how are you doing i'm ok good to hear that can you explain me a little bit more about the situation that you send me by email")
for sent in doc.sents:
print(sent.text)
print(token.text for token in doc)
的回报:
很好你还好吗我很好听到这个消息很高兴你能多给我解释一下你发邮件给我的情况吗
在使用spaCy统计分段时,我得到了相同的结果。根据文档,这个统计模型只提供句子边界(这对我来说很好)。见下文:
nlp = spacy.load("en_core_web_sm", exclude=["parser"])
nlp.enable_pipe("senter")
doc = nlp("perfect how are you doing i'm ok good to hear that can you explain me a little bit more about the situation that you send me by email")
for sent in doc.sents:
print(sent.text)
- 返回相同的结果,基本上没有句子边界
文档指出,这些模型需要经过训练的管道来提供准确的预测。我正在使用https://spacy.io/models/en (https://spacy.io/models/en)。有什么我可能会错过或没有正确使用?我本来期望语法解析(NP、VP等)能够帮助定义边界)至少能够识别一个句子边界。但是没有标点符号,我得到的文本长度与我用作输入的文本长度相同。
此外,我尝试使用不同的语言模型(en_core_web_trf(3.4.1)),但我遇到了环境不识别安装是否正确的问题)。独立的问题。
我正在尝试使用这样的解决方案,用于混合而不是分层(扬声器分层)的文本跨度。
问题很简单,spaCy模型没有接受过该任务的训练,不会做得很好。他们接受的训练大多来自于有标点符号的书籍或文章。
你能做的是用你自己的数据训练sensenerecognizer。这可能是任务很难,性能仍然不会很好,但它应该比默认模型做得更好。
您可以半自动地推断句子边界,然后将它们大写。这不会太难。几乎所有的句子都以人称代词(I/You)开头,否则助动词可以放在人称代词前面。
很好你还好吗我很好听到这个你能多给我解释一下你发邮件给我的情况吗