用于文本简化的工具(Java)[关闭]

问题描述 投票:18回答:4

什么是使用Java可以简化文本的最佳工具?

以下是简化文字的示例:

John, who was the CEO of a company, played golf.
                       ↓
John played golf. John was the CEO of a company.
java nlp stanford-nlp gate
4个回答
33
投票

我认为您的问题是将复杂或复合句子转换为简单句子的任务。根据文献Sentence Types,从一个独立的子句构建一个简单的句子。复合和复杂的句子至少由两个子句构成。另外,从句必须具有主语和动词。因此,您的任务是将句子分解为构成句子的子句。

来自Stanford CoreNLP的依赖性解析是将复合和复杂句子拆分为简单句子的理想工具。您可以尝试demo online。从您的示例句子中,我们将获得Stanford类型依赖(SD)表示法的解析结果,如下所示:

nsubj(CEO-6, John-1)nsubj(played-11, John-1)cop(CEO-6, was-4)det(CEO-6, the-5)rcmod(John-1, CEO-6)det(company-9, a-8)prep_of(CEO-6, company-9)root(ROOT-0, played-11)dobj(played-11, golf-12)

可以从关系中(在SD中)识别出一个子句,例如, nsubjnsubjpass。见Stanford Dependency Manual基本从句可以从head中提取为动词部分,而从[[dependent中提取为主体部分。在上面的SD中,有两个基本子句,即

    John CEO
  • 约翰演奏
  • 获得基本从句后,您可以添加另一部分以使从句成为完整且有意义的句子。为此,请咨询Stanford Dependency Manual

    顺便说一句,您的问题可能与Finding meaningful sub-sentences from a sentence有关


    回答第三条评论:

    一旦您获得了一对主语的动词,即

    nsubj(CEO-6, John-1)

  • ,请获取所有具有链接到该依赖项的依赖项,除了属于该类别的任何依赖项,然后从这些依赖项中提取唯一的单词。 基于示例

    nsubj(CEO-6, John-1)

    ,如果您从John-1开始遍历,则会得到nsubj(played-11, John-1),但由于其类别是主题,因此应忽略它。] >下一步从

    CEO-6

    部分开始遍历。您会得到
    cop(CEO-6, was-4)det(CEO-6, the-5)rcmod(John-1, CEO-6)prep_of(CEO-6, company-9)

    从上面的结果中,您可以遍历新的依存关系(即,找到另一个在头部或依存关系中具有

    was-4, the-5, company-9

    的依存关系)。现在您的依赖项是
    cop(CEO-6, was-4)det(CEO-6, the-5)rcmod(John-1, CEO-6)prep_of(CEO-6, company-9)

    det(company-9, a-8)

    在此步骤中,您已遍历链接到

    nsubj(CEO-6, John-1)的所有依存关系。接下来,从所有首字母和从属字母中提取单词,然后根据这些单词后面的数字以升序排列。此数字表示原文中的词序。

    John was the CEO a company

    我们的新句子缺少一个部分,即

    of

    。这部分隐藏在prep_of(CEO-6, company-9)中。如果您阅读Stanford Dependency Manual,则有两种SD:折叠的和非折叠的。请阅读它们,以了解为什么隐藏此[[of
    的原因以及如何获取此隐藏部分的单词顺序。使用相同的方法,您将得到第二句话

    John played golf


    7
    投票

    4
    投票
    不太可能使用任何已知算法解决此问题

    1
    投票
    © www.soinside.com 2019 - 2024. All rights reserved.