【问题标题】:Learning to tag sentences with keywords based on examples学习根据示例用关键字标记句子
【发布时间】:2015-09-12 05:10:27
【问题描述】:

我有一组(约 5 万个元素)小文本片段(通常是一个或两个句子),每个片段都标记有一组从约 5 千个单词列表中选择的关键字。

我将如何实现一个系统,从这些示例中学习,然后可以用相同的关键字集标记新句子?我不需要代码,我只是在寻找一些关于如何实现它的指针和方法/论文/可能的想法。

【问题讨论】:

  • 我真的认为值得用一个例子来详细说明这一点,因为我不确定你指的是什么。 5K 字很多,涵盖了大部分口语(!);选择关键词的依据是什么?
  • 这些句子已被手动标记为描述它们的最相关的关键字,即句子“今天的日落非常美丽”可以被标记为“日落太阳自然”。每个句子都有 1 到 10 个标签,可能的关键字总数约为 5k。现在我想训练一些基于这些例子的东西来学习如何标记新的看不见的句子。
  • 您在寻找什么样的结果?一个简单的解决方案会为不同标签的所有单词打分,如果没有其他类似的例子,可能会将 "The jabberwock was very beautiful today" 标记为 sunset在集合中。
  • @roganjosh 5,000 个单词在大多数语言中比一个 6 岁单语儿童的词汇量要少。

标签: machine-learning nlp


【解决方案1】:

如果我理解你的话,你需要的是一对文档的相似性度量。我最近一直在使用TF-IDF 对文档进行聚类,它运行良好。我认为在这里您可以使用 TF-IDF 值并为每个文档的相应 TF-IDF 值计算 cosine similarity

  1. TF-IDF 计算

TF-IDF 代表Term Frequency - Inverse Document Frequency。这是如何计算的定义:

Compute TF-IDF values for all words in all documents                                    
    - TF-IDF score of a word W in document D is

             TF-IDF(W, D) = TF(W, D) * IDF(W) 

      where TF(W, D) is frequency of word W in document D
            IDF(W) = log(N/(2 + #W))
            N  - number of documents
            #W - number of documents that contain word W
   
    - words contained in the title will count twice (means more important)
    - normalize TF-IDF values: sum of all TF-IDF(W, D)^2 in a document should be 1.

根据您使用的技术,这可能会以不同的方式实现。我已经使用嵌套字典在 Python 中实现了它。首先,我使用文档名称 D 作为键,然后对于每个文档 D,我有一个嵌套字典,其中单词 W 作为键,每个单词 W 都有一个对应的数值,即计算出的 TF-IDF

  1. 相似度计算

假设您已经计算了TF-IDF 的值,并且您想比较两个文档W1W2 它们的相似程度。为此,我们需要使用一些相似度度量。有很多选择,每一种都有优缺点。在这种情况下,IMO、Jaccard similaritycosine similarity 会很好用。这两个函数都将TF-IDF 和两个文档的名称W1W2 作为其参数,它会返回一个数值,表明两个文档的相似程度。

计算两个文档之间的相似度后,您将获得一个数值。值越大,W1W2 的 2 个文档越相似。现在,根据您想要实现的目标,我们有 2 个场景。

  • 如果您希望 1 个文档仅分配最相似文档的标签,那么您将其与所有其他文档进行比较,并将最相似的文档的标签分配给新文档。
  • 您可以设置一些阈值,您可以分配与相关文档相似度大于阈值的文档的所有标签。如果您设置threshold = 0.7,则所有文档W 将具有所有已标记文档V 的标签,其中similarity(W, V) > 0.7

希望对你有帮助。

祝你好运:)

【讨论】:

    【解决方案2】:

    根据您的描述,您正在寻找某种形式的监督学习。该类中有许多方法,例如朴素贝叶斯分类器、支持向量机 (SVM)、k 最近邻 (kNN) 等等。

    对于文本的数字表示,您可以选择词袋或频率列表(本质上,每个文本都由所有词跨越的高维向量空间上的向量表示)。

    顺便说一句,用一个关键字标记文本(分类任务)比分配最多五个关键字要容易得多(可能的类别数量组合爆炸)

    【讨论】:

    • 感谢您的回答,但我已经熟悉监督学习和向量空间模型。正如你所提到的,分配一个类比多类容易得多,所以我希望有一些具体的指针可以帮助我处理这个问题。如果您知道的话,欢迎参考解决此问题的文献。
    猜你喜欢
    • 2019-04-03
    • 2018-03-16
    • 2012-03-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    相关资源
    最近更新 更多