2014-09-25 53 views
1

我試圖重現Graber等人的結果。在表明當LDA與多語言語料庫一起使用時,最可能的話題(比如前10名)將來自單一語言。他們的論文是hereLda on Bi(多語言語料庫)

這是一個合理的理智檢查執行IMO,但我有困難。

我使用的是他們使用的同一個語料庫,Europarl corpus,語料庫由保加利亞語和英語組成。我串接保加利亞和英語語料庫與

cat corpusBg.txt corpusEn.txt >> corpusMixed.txt. 

這包含在每一行句子,用線在保加利亞的收集和英語第二集合。當我選擇一個包含4個主題的LDA模型時,其中3個僅包含前10名中的英語詞彙,而第四個則包含英語和保加利亞語。我使用的是默認設置LDA:

texts = [[word for word in doc.lower().split()] for doc in open('corpusMixed.txt', 'r')] 
dictionary = corpora.Dictionary(texts) 
corpus = [dictionary.doc2bow(doc) for doc in texts] 
lda = models.ldamodel.LdaModel(corpus, id2word = dictionary, num_topics = 4) 
topics = lda.print_topics(lda.num_topics) 

for t in topics: 
    print t 

請注意,我沒有刪除禁用詞或稀疏的條件,但我認爲這不應該的問題。應該直觀地在保加利亞語和其他只有英語的術語中使用術語,不是嗎?

回答

0

在論文中,他們使用10個主題模型來討論這種現象。您只使用4.

當您使用少量主題運行LDA時,不同的語義主題會合併爲'chimera'主題(我相信David Mimno's term)。只有4個主題用於「每種語言約6000萬字」的語料庫,這幾乎是不可避免的。說實話,我很驚訝10個主題就足夠了,但我猜測LDA很難合併來自不同語言的主題,因爲來自不同語言的極少數單詞對會一起出現在句子中。

+0

這是關於論文的一個好處。在圖標題中我忽略了這些細節。我改寫了10個主題,現在我的所有主題都只包含英文單詞。 無論如何,我看了視頻,我注意到了「奇美拉主題」現象。我的直覺告訴我,設置主題的數量類似於設置決定主題的決議級別。這是不正確的? – sinwav 2014-10-07 05:44:46

+0

是的,這或多或少是正確的。但是我們也可以這樣想:如果有太多真實的,適當解析的語義話題,有些話會最終捆綁在一起。請記住,這只是一個近似值 - 真正的文本不會遵循模型中的假設,所以會發生奇怪的事情!主題可以表示文體或習慣性語言使用(即:不是語義),而重複文本片段等內容可能會產生奇怪的效果。 – drevicko 2014-10-08 22:52:34

+0

只有英文單詞出現...你確定你有兩種語言嗎? (快速瀏覽詞彙應該告訴你)。如果英語語料庫比保加利亞語大得多,那麼這些話題可能會主導保加利亞語的話題。也許你可以把話題剪掉或者添加更多話題。你做了什麼預處理?刪除了停用詞?非常高/低頻詞?有不好的tf/idf分數的單詞? ([Blei](http://www.cs.princeton.edu/~blei/papers/BleiLafferty2009.pdf)有這樣的方法,第11頁或搜索'選擇詞彙') – drevicko 2014-10-08 23:02:02