2017-02-07 204 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