Nlp 如何使用spacy或nltk检索句子的主要意图?

Nlp 如何使用spacy或nltk检索句子的主要意图?,nlp,nltk,spacy,pos-tagger,dependency-parsing,Nlp,Nltk,Spacy,Pos Tagger,Dependency Parsing,我有一个用例,我想使用spacy或nltk或任何NLP库提取句子的主要有意义部分。 例句1:我如何提高嗓门反对骚扰 目的是:“提高声音反对骚扰” 例句2:“唐老鸭是由哪个漫画家/哪个人/谁创作的?” 意图是:唐老鸭是由 例句3:如何使用spacy或nltk检索句子的主要意图? 意图:“使用spacy nltk检索句子的主要意图” 我不熟悉依赖项解析,不知道该怎么做。请帮帮我。TL;博士 您必须定义您想要执行的最终任务,并定义什么是“意图”/“主要信息”或“文本含义” 长期 乍一看,你似乎在要求神

我有一个用例,我想使用spacy或nltk或任何NLP库提取句子的主要有意义部分。

例句1:我如何提高嗓门反对骚扰 目的是:“提高声音反对骚扰”

例句2:“唐老鸭是由哪个漫画家/哪个人/谁创作的?” 意图是:唐老鸭是由

例句3:如何使用spacy或nltk检索句子的主要意图? 意图:“使用spacy nltk检索句子的主要意图”

我不熟悉依赖项解析,不知道该怎么做。请帮帮我。

TL;博士 您必须定义您想要执行的最终任务,并定义什么是“意图”/“主要信息”或“文本含义”

长期 乍一看,你似乎在要求神奇地解决一个自然语言问题。但是让我们看看这个问题和你真正想问的,让我们暂时避免所有的意图/标签或语言的概念,只看看输入/输出是什么:

[in]:  "How Can I raise my voice against harassment"
[out]: "raise voice against harassment"

[in]:  "Donald Duck is created by which cartoonist/which man/whom ?" 
[out]: "Donald duck is created by"

[in]:  "How to retrieve the main intent of a sentence using spacy or nltk ?" 
[out]: "retrieve main intent of sentence using spacy nltk"
似乎所有输出标记/单词都只是输入的一个引用,在这种情况下,如果您只是将问题视为“span/sequence annotation”任务,即

[in]:  "How Can I raise my voice against harassment"
[out]: [0, 0, 0, 1, 0, 1, 1, 1] 

[in]:  "Donald Duck is created by which cartoonist/which man/whom ?" 
[out]: [1, 1, 1, 1, 0, 0, 0]

[in]:  "How to retrieve the main intent of a sentence using spacy or nltk ?" 
[out]: [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
假设每个单词都是一个二进制标签,那么对于要从输入中提取的单词,输出应该标记为
1
,对于不想提取的单词,输出应该标记为
0

现在,鉴于这是一项简单的二进制序列标记任务,我们可以简单地执行以下操作:

但退一步

  • 意图总是输入的一部分,这是真的吗
  • 究竟什么是意图?它是如何定义的
  • 如果输入中没有意图,会发生什么
好吧,即使我们不谈论“意图”,只想提取主要意思

  • 这句话的确切意思是什么,它只是提取“重要的词语”吗?如果是的话,“重要”一词是什么?“重要”是如何定义的
  • 只有不停的话不重要吗?如果是,那么您可以简单地删除stopwords,例如。还有,什么是停止语
但我听说人们用依赖解析来做这件事 什么是依赖项解析?

简而言之,它提供了文本的结构化表示。但传统依附形式主义中的非依附结构具有“意图”的概念

证明:CTR+F开启

因此,我认为,除非在您的场景中更好地定义了“意图”的概念,否则仅仅用依赖关系树解析文本是没有帮助的

这个为意图训练模型的SpaCy工具怎么样? 从

是的,这是一个使用组合解析标签和序列标签并将其定义为“意图”的示例,更具体地说,我们从

每个训练数据由

  • 正文
  • 依赖项头的索引
  • 与依赖项头部相关的“意图”标签
  • 以及一个输入/输出示例

    上面的示例显示,整个三元组列表被定义为一个intent,而不仅仅是原始字符串。三元组指的是
    (依赖、关系、头部)
    ,例如
    酒店
    是从三元组
    ('hotel','PLACE','find')
    查找
    地方

    注意:这仅仅是“语义”或“意图”的概念,没有错误,但定义良好,因此执行此任务的模型可以在有监督的机器学习范式中训练。详情请参阅

    根据您定义为意图/语义的方式和内容,输入/输出将发生变化,要训练的模型可能不同

    但是你为什么要把它弄得这么复杂,我只想要意图字符串?! 因为如果只是一个字符串,“主要意思”或“意图”是什么意思


    我们回到了缺乏定义的问题上,这使得这项任务是一项神奇的任务,而不是计算机可以执行的任务。

    我们不清楚您的意图是什么。在行业中,意图与描述相同意图的多个短语相关联。在这里,您似乎想提取一个名词短语。这个问题没有明确说明。对相当复杂的主题的描述非常好(简短)。对于一个句子的最小“意图”,您可以使用主语-动词-宾语模型探索依赖项解析。它很快也很脏,但在类似文档的语料库中效果相当好(很大程度上取决于文档所代表的语言类型)。
    TRAIN_DATA = [
        (
            "find a cafe with great wifi",
            {
                "heads": [0, 2, 0, 5, 5, 2],  # index of token head
                "deps": ["ROOT", "-", "PLACE", "-", "QUALITY", "ATTRIBUTE"],
            },
        ),
        (
            "find a hotel near the beach",
            {
                "heads": [0, 2, 0, 5, 5, 2],
                "deps": ["ROOT", "-", "PLACE", "QUALITY", "-", "ATTRIBUTE"],
            },
        ),
    
    [in]:  find a hotel with good wifi
    [out]:
        [
          ('find', 'ROOT', 'find'),
          ('hotel', 'PLACE', 'find'),
          ('good', 'QUALITY', 'wifi'),
          ('wifi', 'ATTRIBUTE', 'hotel')
        ]