我正在寻找能够将复合句分成简单句子的句子分段器。
示例:
Input: Andrea is beautiful but she is strict.
(expected) Output: Andrea is beautiful. she is strict.
Input: i am andrea and i work for google.
(expected) Output: i am andrea. i work for google.
Input: Italy is my favorite country; i plan to spend two weeks there next year.
(expected) Output: Italy is my favorite country. i plan to spend two weeks there next year.
有什么建议吗?我试过NLTK,spacy,segtok,nlp-comprom但是他们没有在这些复杂的例子上工作(我知道这是一个难题,因此没有简单的解决方案)。
答案 0 :(得分:-1)
首先,您需要从语言(语法)的角度更好地定义“简单句子”对您的含义。例如,您可以说简单的句子是
简而言之,您可以使用很多替代方法来定义它,并且根据您的需要,“规则”应更加(或更不严格),因为这将影响算法设计和(当然)输出。
我建议您2条基本说明
使用您提供的示例进行演示:
Spacy输出这些树input1和input2。
您可能会注意到,使用conj
作为定界符并合并其余子树,它将返回您期望的输出。
如上所述,通过标点符号分割后,您可以对input3进行相同的操作。
最后,这不是一个简单的任务,使用这些简单的规则可能会很好,但是如果您需要更好的结果,请首先改进对“复合”或“简单”句子含义的定义,然后进一步了解使用机器学习的复杂算法。
尽管这是一个非常古老的问题,但很高兴知道这是否有帮助:)