2014-09-25 81 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