Clustering
文本挖掘:如何用人工智能對文本(例如新聞文章)進行聚類?
我已經為不同的任務構建了一些神經網絡(MLP(全連接)、Elman(循環)),比如打乒乓球、對手寫數字進行分類等等……
此外,我嘗試構建一些第一個卷積神經網絡,例如用於對多位手寫筆記進行分類,但我對分析和聚類文本是全新的,例如在圖像識別/聚類任務中,可以依賴標準化輸入,例如 25x25 大小的圖像, RGB 或灰度等……有很多預先假設的功能。
對於文本挖掘,例如新聞文章,您有不斷變化的輸入大小(不同的單詞、不同的句子、不同的文本長度……)。
如何利用人工智能(最好是神經網絡/SOM)實現現代文本挖掘工具?
不幸的是,我找不到簡單的入門教程。複雜的科學論文很難閱讀,也不是學習主題的最佳選擇(在我看來)。我已經閱讀了很多關於 MLP、dropout 技術、卷積神經網絡等的論文,但是我無法找到一篇關於文本挖掘的基本論文——我發現的所有內容對於我非常有限的文本挖掘技能來說都太高了。
潛在狄利克雷分配 (LDA) 很棒,但如果你想要更好的使用神經網絡的東西,我強烈建議使用 doc2vec ( https://radimrehurek.com/gensim/models/doc2vec.html )。
它能做什麼?它的工作原理與 Google 的 word2vec 類似,但不是單個單詞特徵向量,而是一個段落的特徵向量。該方法基於skip-gram模型和神經網絡,被認為是提取文檔特徵向量的最佳方法之一。
現在有了這個向量,您可以運行 k-means 聚類(或任何其他優選算法)並對結果進行聚類。
最後,要提取特徵向量,您可以這樣做:
from gensim.models import Doc2Vec from gensim.models.doc2vec import LabeledSentence class LabeledLineSentence(object): def __init__(self, filename): self.filename = filename def __iter__(self): for uid, line in enumerate(open(self.filename)): yield LabeledSentence(words=line.split(), labels=['TXT_%s' % uid]) sentences = LabeledLineSentence('your_text.txt') model = Doc2Vec(alpha=0.025, min_alpha=0.025, size=50, window=5, min_count=5, dm=1, workers=8, sample=1e-5) model.build_vocab(sentences) for epoch in range(500): try: print 'epoch %d' % (epoch) model.train(sentences) model.alpha *= 0.99 model.min_alpha = model.alpha except (KeyboardInterrupt, SystemExit): break