【问题标题】:Is there any NLP tools for semantic parsing for languages other than English是否有任何 NLP 工具可以对英语以外的语言进行语义解析
【发布时间】:2015-12-02 15:47:55
【问题描述】:

我想解析马拉雅拉姆语(印度语言)文本语料库以开发问答系统。是否有任何 NLP 工具可用于对英语以外的语言进行语义解析。

【问题讨论】:

  • 请具体说明,您要解析的语言是什么?你想解决什么任务?尼尔? POS标签?词干?词形还原?
  • @amirouche.. 我想解析像马拉雅拉姆语这样的印度语言..使用解析我可以将工作扩展到问答
  • edit your post充分说明您的意图。详细而具体。另外添加其他标签以覆盖更多人。选择与您正在处理的主题相关的标签,最好在黑暗中寻求宽恕。因此,在页面的“相关”部分中查看其他具有类似意图的问题并复制有趣的标签。你至少需要“question answering”标签。
  • 您想使用哪种计算机语言?

标签: parsing nlp question-answering


【解决方案1】:

这听起来可能又大又吓人。

据我所知,没有可以学习的免费软件问答系统,即使它已记录在案。

问答分为两部分:

  • 理解问题
  • 在一些预处理数据集中查找响应(比如wikidata.org

这两个步骤都需要类似的算法。

垂直问答管道

要实现垂直问答系统,您需要能够高水平地解析“马拉雅拉姆语”和其他印度语言,这意味着至少要做到:

  • 将文本分成段落,然后分成句子和单词。你必须能够说出一个句子的结尾。例如,根据语言的不同,句子可能不会以相同的字符结尾。或缩写。像ie. 不是句子的结尾。 I.B.M. 不是三个句子,等等。句子如何开头,英文有一个大写字母,但并非所有大写字母都像专有名词一样开头一个句子,例如“乔姆斯基还活着吗?”

  • Part of Speech Tagging:区分名词、专有名词、动词等

  • 创建named entity recognizer:识别人名、组织、地点、时间表达、数量、货币价值、百分比等。

  • 构建语义树依赖:例如命名实体“她”或“他”指的是哪个?谁是句子的主语,补语等。

  • 创建一个text generation tool。鉴于您的程序理解问题,找到了可能的答案,它必须以自然语言对其进行格式化。

幸运的是,您从中获得灵感的英语示例不乏其人。如果你想在 Python 上工作,你会想学习 Spacy(想要快速和最新的 NLP 库)和 NLTK 其中 comes with book

算法可以在语言之间共享。

更窄的方法

如果您不想完成所有步骤而只解决回答问题的子问题。您需要简化问题并消除变量/未知数:

您必须构建一个已拆分并标记为 facts 的数据库,以便您可以通过执行 SQL 查询来简单地回答问题。例如给定以下事实元组:

WHO:印度 WHAT:赢得 WHAT:板球锦标赛 WHEN:2015

在这里,我将标记简化为WHOWHENWHAT

这个问题很容易回答:

谁:?什么:赢得什么:板球锦标赛时间:2015

即。

谁赢得了 2015 年的板球冠军?

同样的问题必须是“可预测的”并且易于解析其他示例:

谁在什么时候做了什么

什么是什么

什么时候是谁

如果您可以识别/解析WHOWHEN 并猜测用户提供的句子中的WHAT 是什么,则此方法可以工作。您还可以进一步简化并说WHENs 只能是 4 位数字,即。年。并进一步约束题型,简化解析部分。

这将引导您找到一个程序,该程序可以以一种比原始 ElasticSearch 或 PostgreSQL 等信息检索 (IR) 系统更自然、更正确的方式实际回答问题。

事实数据库

您可能需要使用语义网络查看free ConceptNet(如果您需要帮助或想贡献印度维基词典,请查看send a message to the mailling list)或babelnet。还有wordnet。

课程

我很喜欢Jurafsky course,有一个关于QA的特定章节。 Jurafsky 写了一本完整的 NLP 简介。

搜索提示

在世界 Wide 网络中搜索有关 NLP 算法的信息(使用您查找信息的语言)。说一个法语词形还原器,我在法语研究门户网站上进行搜索,或者通过使用本机 ie 的搜索引擎进行搜索。法语措辞。美国搜索引擎在其他语言中的表现不如英语,所以要准备好分页(也可以使用搜索工具)。

文化

在自然语言处理和人工智能方面建立良好的文化。看总结或信息检索(很容易),您将学习可以在另一个问题中重复使用的方法。例如,如果您查看rule based machine translation,您会了解到在行业中他们使用简化的、不含歧义的自然语言语法来准确翻译文档。这些文档是用简单的英语编写的(例如SUBJECT VERB NOUN),可以很容易地为其创建计算机语法(如计算机语言语法),并且可以很容易地进行逐字翻译。这是解决子问题以实现更高质量的实例。这就是我想出上述狭隘方法的原因。

算法

最后但同样重要的是,大多数子问题解决方案属于以下三个算法类别之一:

  • 代数和图论试图理解数据并解释其结果。例如PageRank、SimRank、CoSimRank、逻辑编程。

  • 我将其与术语动力学进行比较的统计数据,基本上“您解决了问题但不知道为什么”。这就是所谓的“机器学习”,在业界主要用于解决与 NLP 相比实际上狭窄的问题。但是仍然存在机器学习算法来解决自然语言问题,例如topic modeling,但这不是唯一的例子。 Statistical programming 很受欢迎。

  • 混合:这意味着两种方法的混合。

阅读On Chomsky and the Two Cultures of Statistical Learning,了解有关二分法和研究/工程背景的更多信息。

一般提示

你不需要了解和理解每一种算法和科学依据,只要你了解它们的局限性以及如何使用它们。

我想到的一些事情,即使我主要阅读英语,用我的“母语”法语阅读也会扩大我的理解。

保存你找到的论文和资源,事情来来去去。

【讨论】:

    【解决方案2】:

    当我试图为英语以外的语言寻找语义解析器时,我遇到了两个主要问题:寻找带有语义注释的训练数据和类似 FrameNet 的语义数据库。

    由于即使是流行语言也几乎不可能找到 FrameNet 的良好替代品,我怀疑这在您的情况下是不可能的。

    一种可能性是使用语义角色标签。这种浅语义解析不像真正的语义解析器那样详细,但也许它是朝着正确方向迈出的一步。我知道的 SRL 解析器本身并不是用于英语的,而是带有一个已经训练好的英语语言模型。所以最大的挑战是为你的语言训练这样一个模型,这需要你拥有一个带有语义注释的大型语料库。大多数解析器需要 CoNLL 格式的数据,因为有多种语言的语料库here

    伴侣工具
    它们主要关注依赖解析,但也包含一个可以训练的语义角色标注器。它们是用 C++ 编写的独立工具,因此如果您想将它们集成到您的程序中,您可能需要构建一些 shell 脚本的工具链。

    清除 NLP
    与 mate-tools 不同,ClearNLP 可以用作 Java 库,并且该项目也在积极开发中。它们还支持新 SRL 模型的训练,这是一个相对较新的功能。

    由于我怀疑您是否有时间和资源为您的语言创建语义注释语料库,一个可能的解决方法是使用非常好的机器翻译系统将您的语料库翻译成英语,然后应用语义解析。这种方法很容易出错,因此我强烈建议更正翻译后的输出,即使这是一项耗时的任务。

    我目前正在使用 SEMAFOR 解析器 (GitHub)。它是用 Java 编写的,带有预训练的英语模型,并在易于阅读的 XML 文件中创建 FrameNet 注释。它远非完美(就像目前所有的语义解析器一样),但它创建了一个您可以使用的输出。如果您选择使用它,最好忽略预编译的 jar,并从其 GitHub 页面下载最新代码。

    我知道这不是完美的解决方案,但它是我会选择的最快、最可靠的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      相关资源
      最近更新 更多