python - 如何使用 python 最好地将语法复杂的文本转换为语法简单的文本?

标签 python nlp spacy grammar

我想编写一个 python 程序,能够将句法复杂的句子转换为(可能是几个)不太复杂的句子,以便我可以在下游任务中使用。

示例:

复杂句子:“今晚我要和 friend 们一起踢足球,然后再去市中心旁边的剧院看电影。”

内容相同的简单文本:“今晚我要和 friend 们踢足球。然后我们要去剧院看电影。剧院靠近市中心”

目标:

可能的目标是最终输出仅包含简单的主子句(没有并列子句、没有从属子句、没有关系子句等)。本质上,结果子句最终应该有一个主语、一个谓语、一个直接宾语和一个潜在的间接/介词宾语(每个宾语可能有一个修饰语,例如形容词属性)。如果其中有多个,我不介意以重复结束(“我爱妈妈和爸爸。”-->“我爱妈妈。我爱爸爸。”)。

我已经尝试过:

到目前为止,我已经开始实现相关子句解析器和协调解析器。他们确实工作得很好。然而,还有更多的情况需要涵盖(因果、时间、对抗性子条款等),我开始想知道是否有人对如何解决这个问题有更好的想法。

此外,我严重依赖 spaCy,但我遇到了越来越多的问题,因为转换文档(我在转换文本时这样做)违反了 spaCy 的核心原则。因此:也许我应该完全使用不同的方法?

感谢您的任何想法...

最佳答案

您尝试做的事情称为“句子简化”。这是一个活跃的研究课题,没有简单的解决方案,甚至没有一个可以使用的强大的库(据我所知)。恐怕你能做的最好的事情就是阅读研究论文并实现它们,寻找已发布的模型,或者通过依赖项解析进行一些足够好的处理。看here一些研究的概述。

你是对的,重写任务不是 spaCy 的设计目的。但是,如果句子级对齐就足够了,我认为将重写的句子存储为附加到每个句子的跨度扩展应该不难。

如果您需要直接操作依赖关系,我认为没有什么比 spaCy 更容易使用的了。

关于python - 如何使用 python 最好地将语法复杂的文本转换为语法简单的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72462836/

相关文章:

python - 可选择替换子字符串 python

python matplotlib条形图添加条形标题

python - 了解 Spacy 的得分手输出

python-3.x - 基于 Spacy 规则匹配器选择 Pandas DataFrame 的行

python - python中的序列到序列建模

python - 如何在第二代应用程序引擎上下载 Spacy 模型?

python - 返回一个 bool 数据框

python - 多维 numpy 数组中列表的频率表

nlp - 如何自定义 spaCy 的分词器以排除正则表达式描述的拆分短语

machine-learning - 即使对于用于训练它的文件,libSVM 也会给出非常不准确的预测