学习根据示例

时间:2015-09-07 15:51:14

标签: machine-learning nlp

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

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

2 个答案:

答案 0 :(得分:3)

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

  1. TF-IDF计算
  2. 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都有一个对应的数值,即计算出来的{ {1}}。

    1. 相似度计算
    2. 假设您已经计算了TF-IDF值,并希望比较2个文档TF-IDFW1它们的相似程度。为此我们需要使用一些相似性度量。有很多选择,每个选择都有利有弊。在这种情况下,IMO Jaccard similaritycosine similarity会很好用。这两个函数都有W2和2个文档TF-IDFW1的名称作为参数,它将返回一个数值,表示2个文档的相似程度。

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

      • 如果您希望1个文档仅指定最相似文档的标记,则将其与所有其他文档进行比较,并为新文档指定最相似文档的标记。
      • 您可以设置一些阈值,并且您可以指定与所讨论文档具有相似性的文档的所有标记大于阈值。如果您设置W2,那么所有文档W都会包含threshold = 0.7所有已标记文档V的标记。

      我希望它有所帮助。

      祝你好运:)

答案 1 :(得分:1)

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

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

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

相关问题