2017-02-07 203 views
0

我有一个数据,表示操作员对工业设备上执行的各种活动的评论。这些评论可能反映了日常维护/替换活动,或者可能表示出现了一些损害,并且必须对其进行修复以纠正损坏。 我有一套200,000句子,需要分为两个桶 - 修复/定期维护(或未确定)。这些没有标签,因此寻找无监督的基于学习的解决方案。无监督学习句子

某些样本数据,如下所示:

“电机线圈损坏.Replaced马达” “偶尔启动问题代替开关”

“带安装看到新带裂纹”“代替皮带“ ”油和清洁完成“。 “做了预防性维护时间表”

前三个句子必须标记为修复,而第二个三个作为定期维护。

什么是对这个问题的一个好方法。尽管我有一些机会学习的机会,但我是基于NLP的机器学习的新手。

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

多篇论文,但想了解是否有任何标准的方法来这样的问题

回答

1

好像你可以使用一些可靠的关键字(动词,似乎在这种情况下, )为NLP分类器创建训练样本。或者,您可以使用KMeans或KMedioids聚类,并使用2作为K,这对分离该集合会做得非常好。如果你想真正参与进来,你可以使用像潜在Derichlet分配这样的东西,这是一种无监督主题建模的形式。但是,对于这样的问题,如果您的数据量很少,那么对于您将成为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文本索引来执行“更像此类”类型的功能,因此您无需玩机器学习连续模型更新游戏。

+0

感谢您的选择,我会探讨的选项。但有一个问题,做KMeans,什么将是一个很好的建议,矢量化的句子,使它仍然保留的含义。 –

+0

“意义”很难保存(并且定义!),但一般NGrams可以帮助维护上下文,因为它保留了一定的顺序。很多时候,我会同时生成BIGrams和Bag of Words“特征”,以便进行聚类。一个挑战是稀疏向量归一化,因为显然每个句子不是一个“实值”向量空间。对于少量的数据,你可以很容易地对它们进行归一化。 – markg