【问题标题】:Techniques other than RegEx to discover 'intent' in sentences正则表达式以外的技术在句子中发现“意图”
【发布时间】:2016-11-18 01:06:22
【问题描述】:

我正在为一家非营利组织开展一个项目,以帮助处理和分类每年来自世界各地的现场工作人员/承包商的 1000 份报告。我对 NLP 比较陌生,因此想寻求小组对解决我们问题的方法的指导。

我将重点介绍当前的流程以及我们面临的挑战,并希望您能帮助我们以最佳方式解决我们的问题。

当前流程:现场官员以最佳实践的形式提交本地运行项目的报告。这些报告随后由全职策展人团队处理,他们 (i) 确保他们遵守最佳实践模板并 (ii) 编辑文档以改进语言/风格/语法。

挑战:随着现场工作人员数量的增加,生成的报告量也在增加,我们的编辑现在正成为瓶颈。

解决方案:我们希望自动化流程的第一步,即检查文档是否符合组织最佳实践模板

基本上,我们需要确保每个报告都包含 3 个组件,即: 1. 说明其目的:此最佳实践解决了哪些主题/问题? 2. 识别受众:这是给谁的? 3. 亮点相关性:读者看完后能做什么?

这是一个良好报告提交的示例。

“本文档介绍了在发展中国家成功应用最佳做法的技术。本研究旨在帮助低收入农民确定一套最佳做法,用于在价格不透明的地方为农产品定价。通过实施这些流程,农民将能够为他们的产品获得更好的价格并增加他们的家庭收入。”

到目前为止,我们的方法是使用 RegEx 并检查关键字。即,为了检查合规性,我们使用以下逻辑: 1 检查“说明目的”=我们做一个正则表达式来匹配“目的”、“意图” 2 检查“识别观众”=我们做一个正则表达式来匹配“识别”,“是为了” 3 检查“突出显示相关性”=我们使用正则表达式匹配 'able to'、'allows'、'enables'

目前的 RegEx 方法似乎非常原始且有限,所以我想询问社区是否有更好的方法来使用 NLTK、CoreNLP 之类的东西来解决这个问题。

提前致谢。

【问题讨论】:

    标签: nlp nltk linguistics stanford-nlp


    【解决方案1】:

    有趣的问题,我相信它是一个彻底的研究问题!在自然语言处理中,很少有技术可以从文本中学习和提取模板,然后将其用作黄金注释来识别文档是否遵循模板结构。研究人员使用这种系统进行自动问答(从问题中提取模板然后回答它们)。但在你的情况下,它更难,因为你需要从报告中学习结构。鉴于自然语言处理,这更难解决您的问题(没有简单的 NLP 任务与您的问题定义相匹配),您可能不需要任何花哨的模型(复杂)来解决您的问题。

    您可以从简单的文档匹配和计算相似度分数开始。如果您有大量正面示例(格式良好且指定的报告),您可以构建基于 tf-idf 权重的字典。然后您可以检查字典标记的存在。您也可以将此问题视为二元分类问题。有很好的机器学习分类器,例如 svm、逻辑回归,它们适用于文本数据。您可以使用 python 和 scikit-learn 快速构建程序,它们非常易于使用。对于文本预处理,您可以使用 NLTK。

    由于报告将由现场工作人员生成,报告将回答的问题很少(您提到了 3 个特定组件),我想简单的关键字匹配技术将是您研究的良好开端。您可以根据自己的观察逐渐向不同的方向移动。

    【讨论】:

      【解决方案2】:

      这似乎是将一些机器学习应用于您的流程的完美场景。

      首先,覆盖了数据标注问题。这通常是最烦人的问题。值得庆幸的是,您可以依靠策展人。策展人可以标记指定的特定句子:受众、相关性、目的。

      训练一些模型来识别这些类型的子句。如果所有分类器都针对某个文档触发,则表示该文档格式正确。

      如果遇到错误,请务必使用具体示例重新训练模型。

      【讨论】:

        【解决方案3】:

        如果您不提供有关文档格式的提示,这是一个悬而未决的问题。

        你能做的就是让写报告的人符合文档的某种格式,比如有 3 个部分,每个部分都有一个预定义的标题,像这样

        1。目的

        在几个段落中解释文档的目的。

        2。主题/问题

        这解决了 foobar 问题,也称为 lorem ipsum 感觉文本。

        3。带走

        读者看完后能做什么?

        例如,您从 .doc 格式解析此文档并提取三个部分。然后你可以通过拼写检查、语法和文本复杂度算法。最后,您可以提取命名实体(参见命名实体识别)和低 TF-IDF 词。

        【讨论】:

          【解决方案4】:

          我一直在尝试做一些与临床试验非常相似的事情,其中​​大部分数据再次用自然语言编写。

          如果您不关心过去的数据,并且可以控制现场官员的写作内容,也许您可​​以让他们在他们的报告中提供这 3 个额外的字段,这样就完成了。

          否则;我最熟悉的库 CoreNLP 和 OpenNLP 有一些工具可以帮助您完成部分任务。例如;如果您的正则表达式模式匹配以前缀“inten”开头的单词,则实际单词可能是“intention”、“intended”、“intent”、“intentionally”等,而您不一定知道该单词是否是动词、名词、形容词或副词。这些库中的词性标注器和解析器能够告诉你单词的类型(词性),也许你只关心以“inten”开头的动词,或者更严格地说,是第三人称单数所说的动词。

          CoreNLP 有另一个名为OpenIE 的工具,它试图提取句子中的关系。例如,给定以下句子

          她出生在一个小镇,乘坐午夜火车去任何地方

          CoreNLP 可以提取三元组

          她,乘坐午夜火车

          例如结合词性标注器;您还会知道“she”是人称代词,而“took”是过去式动词。

          这些库可以完成许多其他任务,例如标记化、句子拆分和命名实体识别,您可以将所有这些工具与您的领域知识和创造力相结合,以提出适合您的解决方案案例。

          【讨论】:

            猜你喜欢
            • 2015-12-09
            • 1970-01-01
            • 1970-01-01
            • 2012-07-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多