2016-11-14 59 views
2

我試圖使用Mallet字面上的主題建模和沒有的expirience等我的目的是要得到,我現在所擁有的中號文件ñ主題,每個文檔與一個或多個話題進行分類(文檔1 =主題1;文檔2 =主題2,可能主題3),並在未來對此文檔進行分類。我試圖首先使用bigartm,但在這個程序中沒有發現任何分類,只有主題建模。所以槌,我創建了一個corpus.txt文件,格式如下:馬槌基本用法。第一步

Doc.num. \t(tab) Label(actualy 1 everywhere) \t Text 1 1 some text of document to classify 2 1 another doc text ...

現在把它給特徵序列格式槌與

bin/mallet import-file --input corpus.txt --output foo.mallet--keep-sequence

後,我能得到從這個文件的主題

,然後獲取主題從它

bin/mallet train-topics --input foo.mallet --output-state state.gz --output-topic-keys topic-keys.txt --output-doc-topics doc-topics.txt

因此,現在一般的問題是如何使用槌子(火車分類器?)將每個現有文檔分配給我找到的主題,並保存此結果以應用於將要用此主題進行分類的未來文檔。

感謝

回答

2

您要查找的內容在Mallet主題模型中被描述爲「推論」。訓練分類器是一個單獨的包,旨在直接學習單詞和預先存在的一組類之間的關係。

以下是使用新的文件推斷方向:

當你訓練與train-topics命令的模型,添加--inferencer-filename [FILENAME]選項。該選項將根據當前訓練有素的模型創建主題推理工具並將其保存在文件中。 如果您已經有訓練有素的模型,例如從--output-state--output-model可以從該狀態或模型進行初始化,運行0次迭代採樣並輸出推理器。

創建推理程序文件後,請使用MALLET命令bin/mallet infer-topics --help獲取有關使用主題推理的信息。

請注意,您必須確保新數據與您的訓練數據兼容。否則單詞ID 425可能意味着完全不同的單詞。這將使所有主題看起來同樣可能。使用MALLET命令bin/mallet import-fileimport-dir中的選項--use-pipe-from [MALLET TRAINING FILE]指定培訓文件。

1

在你的問題的設置,人類可讀的文件doc-topics.txt包含文檔主題的矩陣,即每個文檔語料庫中進入主題組成。主題用數字表示,並給出它們的百分比。文件的格式是這樣的:主題已經按其優先順序排列,所以主要的主題首先出現。

文件topic-keys.txt包含第一個最熱門的話。你可以使用這個文件猜測主題的一些好的標籤。這個標籤主要是一項手工任務,它可能涉及回到文件並檢查其中的一些文件以獲得真正好的標籤。

+0

那麼,你的意思是說我應該爲了將來的目的而自己編寫腳本,並且在'Mallet'中沒有這樣的機會來訓練這個主題的分類器嗎? – Kirill

+0

@Kirill:有可能將「預先訓練的」主題模型應用於Mallet中的新文檔; 「我沒有手中的命令行語法('bin/mallet help'給了你很多有用的信息,槌子命令'train-classifier'和'classify-file'可能是你感興趣的。 – jknappen