【问题标题】:unsupervised learning on sentences句子的无监督学习
【发布时间】:2017-06-25 07:16:09
【问题描述】:

我有一个数据,该数据代表来自操作员的 cmets 对工业设备上执行的各种活动的影响。 cmets 可以反映例行维护/更换活动,也可以表示发生了一些损坏并且必须进行修复以纠正损坏。 我有一组 200,000 个句子需要分为两个桶 - 修复/计划维护(或未确定)。这些没有标签,因此寻找基于无监督学习的解决方案。

部分样本数据如下:

“电机线圈损坏。更换电机” “看到皮带裂缝。安装了新皮带” “偶尔启动问题。更换开关”

“更换皮带” “上油和清洁完成”。 “制定了预防性维护计划”

前三个句子必须标记为修复,而后三个句子必须标记为计划维护。

什么是解决这个问题的好方法。虽然我对机器学习有一定的了解,但我对基于 NLP 的机器学习还是很陌生。

我看到很多与此相关的论文https://pdfs.semanticscholar.org/a408/d3b5b37caefb93629273fa3d0c192668d63c.pdf https://arxiv.org/abs/1611.07897

但想了解此类问题是否有任何标准方法

【问题讨论】:

    标签: machine-learning


    【解决方案1】:

    似乎您可以使用一些可靠的关键字(在这种情况下似乎是动词)来为 NLP 分类器创建训练样本。或者您可以使用 KMeans 或 KMedioids 聚类并使用 2 作为 K,这样可以很好地分离集合。如果你想真正参与进来,你可以使用 Latent Derichlet Allocation 之类的东西,这是一种无监督主题建模的形式。但是,对于这样的问题,在您拥有的数据量很少的情况下,您对结果越感到沮丧,您将成为 IMO。

    OpenNLP 和 StanfordNLP 都有文本分类器,所以如果你想走分类路线,我建议如下:

    - Use key word searches to produce a few thousand examples of your two categories
    - Put those sentences in a file with a label based on the OpenNLP format (label |space| sentence | newline )
    - Train a classifier with the OpenNLP DocumentClassifier, and I recommend stemming for one of your feature generators
    - after you have the model, use it in Java and classify each sentence.
    - Keep track of the scores, and quarantine low scores (you will have ambiguous classes I'm sure)
    

    如果你不想走那条路,我建议使用像 SOLR 或 ElasticSearch 这样的文本索引技术或你最喜欢的 RDBMS 的文本索引来执行“更像这样”类型的功能,这样你就没有玩机器学习持续模型更新游戏。

    【讨论】:

    • 感谢您提供的选项,我将探讨这些选项。不过,有一个问题是,要执行 KMeans,对句子进行向量化以使其仍保留含义的好建议是什么。
    • “含义”很难保存(和定义!),但一般来说,NGrams 可以帮助维护上下文,因为它保留了一些顺序。很多时候,我会同时生成 BIgrams 和 Bag Of Words“特征”来进行聚类。一个挑战将是稀疏向量归一化,因为显然每个句子都不是“实值”向量空间。对于您拥有的少量数据,您可以轻松对其进行归一化。
    猜你喜欢
    • 2014-04-20
    • 2013-03-24
    • 2019-02-20
    • 2018-10-01
    • 2017-08-11
    • 2010-12-22
    • 2017-06-27
    • 2021-10-17
    • 2017-12-08
    相关资源
    最近更新 更多