【问题标题】:NLP: Sentence segmentation by intentNLP:按意图分句
【发布时间】:2018-06-12 03:49:09
【问题描述】:

我正在尝试通过意图找到句子隔离的解决方案。由于一个句子可能有多个意图,我想将一段文本按意图分成短句。

例如:将“通过电子邮件发送我今天的团队会议,并附加日程文件”到“通过电子邮件发送我的团队会议是今天”,“并附加日程文件”。或者“我想要苹果和橙子,我今晚会迟到”变成“我想要苹果和橙子”,“我今晚会迟到”。

我已经检查了分块和句子标记,我认为分块可能是一个起点,但它并没有给出一个接近的方法。有人可以给我一些建议吗?非常感谢!

【问题讨论】:

  • 分句是你的主要目标,还是只是服务于更高目标的工具?我认为还有其他可能更简单的解决方案来捕捉一个句子中的多个意图——如果这是目标的话。
  • 致 Bau:是的,最终捕获多个意图是我们的最终目标。然而,我的团队决定先将其分解,这是我们的第一次尝试。如果您能提出一种替代方法,将不胜感激!谢谢!

标签: nlp


【解决方案1】:

根据您的评论,我会将您的问题解释为多标签分类问题,这可能比首先尝试分割句子更容易(至少从我过去所做的来看)。每个句子可以有多个标签,例如“用户想要水果”和“用户会迟到”。

您可以通过实现One-Vs-Rest classifier 来解决这个问题。这将为每个标签训练一个分类器,但标签不是互斥的。这基本上意味着每个标签都会有自己的分类器经过训练,每个标签都会在给定一个句子的情况下决定其标签是否合适。如果两个标签合适,则分配两个标签。

根据我的经验,如果您之前使用简单的 TFIDF 和一些简单的预处理进行矢量化,然后使用一些经典的分类器,如果您有良好的训练数据,您已经可以获得相当不错的结果。

【讨论】:

  • 感谢您的建议!然而,事实是,我们缺乏训练/测试数据,而且我们确实有一个现有的黑盒 API 可以为我们检测句子意图。因此,在这种情况下,我们试图将句子分解并逐个输入 API。
【解决方案2】:

句子分割是我想要的解决方案,假设您为每个意图分离了训练数据,您可以通过简单地增加来自每个意图的话语,在综合生成的数据上训练一个句子分割器(序列标记模型)。

例如,假设我们有 4 个意图和多个训练话语,您可以通过随机选择一个句子编号“s_num”来为句子分割器生成一个训练文本,该数字表示该训练话语中将包含多少意图/句子,然后根据这个数字随机选择一个“s_num”个句子并将它们附加在一起,为分割器创建一个训练实例。

标签可以如下:

“这是一个意图 1 的句子,这是一个意图 2 的句子” [“开始”、“O”、“O”、“O”、“END”、“O”、“开始”、“O”、“O”、“O”、“END”]

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 2017-10-23
    • 2017-10-28
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    • 2012-09-03
    • 2010-10-07
    相关资源
    最近更新 更多