Python LDA gensim的问题:"DeprecationWarning: invalid escape sequence"。

3

我是新手,对stackoverflow和python不太熟悉。我正在尝试使用PyCharm编辑器中的gensim包,在文本语料库上运行Latent Dirichlet Analysis。我在R中准备了语料库,并使用以下R命令将其导出为csv文件:

write.csv(testdf, "C://...//test.csv", fileEncoding = "utf-8") 

以下是创建的csv结构(尽管具有更长和已经预处理的文本):
,"datetimestamp","id","origin","text"
1,"1960-01-01","id_1","Newspaper1","Test text one"
2,"1960-01-02","id_2","Newspaper1","Another text"
3,"1960-01-03","id_3","Newspaper1","Yet another text"
4,"1960-01-04","id_4","Newspaper2","Four Five Six"
5,"1960-01-05","id_5","Newspaper2","Alpha Bravo Charly"
6,"1960-01-06","id_6","Newspaper2","Singing Dancing Laughing"

我接下来将尝试使用以下基于gensim教程的必要Python代码,执行简单的LDA分析:

import gensim
from gensim import corpora, models, similarities, parsing
import pandas as pd
from six import iteritems
import os
import pyLDAvis.gensim

class MyCorpus(object):
     def __iter__(self):
             for row in pd.read_csv('//mpifg.local/dfs/home/lu/Meine Daten/Imagined Futures and Greek State Bonds/Topic Modelling/Python/test.csv', index_col=False, header = 0 ,encoding='utf-8')['text']:
                 # assume there's one document per line, tokens separated by whitespace
                 yield dictionary.doc2bow(row.split())

if __name__ == '__main__':
    dictionary = corpora.Dictionary(row.split() for row in pd.read_csv(
        '//.../test.csv', index_col=False, encoding='utf-8')['text'])
    print(dictionary)
    dictionary.save(
        '//.../greekdict.dict')  # store the dictionary, for future reference

    ## create an mmCorpus
    corpora.MmCorpus.serialize('//.../greekcorpus.mm', MyCorpus())
    corpus = corpora.MmCorpus('//.../greekcorpus.mm')

    dictionary = corpora.Dictionary.load('//.../greekdict.dict')
    corpus = corpora.MmCorpus('//.../greekcorpus.mm')

    # train model
    lda = gensim.models.ldamodel.LdaModel(corpus=corpus, id2word=dictionary, num_topics=50, iterations=1000)

我遇到了以下错误代码,程序退出:

...\Python\venv\lib\site-packages\setuptools-28.8.0-py3.6.egg\pkg_resources_vendor\pyparsing.py:832:DeprecationWarning:无效的转义序列\d

\...\Python\venv\lib\site-packages\setuptools-28.8.0-py3.6.egg\pkg_resources_vendor\pyparsing.py:2736:DeprecationWarning:无效的转义序列\d

\...\Python\venv\lib\site-packages\setuptools-28.8.0-py3.6.egg\pkg_resources_vendor\pyparsing.py:2914:DeprecationWarning:无效的转义序列\g

\...\pyLDAvis_prepare.py:387: DeprecationWarning: .ix已被弃用。 请使用 .loc进行基于标签的索引或 .iloc进行位置索引

我找不到任何解决方案,也不知道问题的具体原因。 我花了几个小时确保csv的编码为utf-8并且在R中正确导出并在python中正确导入。

我做错了什么或者我还能从哪里查找?谢谢!

2个回答

3
DeprecationWarning 是一个警告,意味着某些功能将被废弃,提示用户在未来保持兼容性时使用其他功能。因此,在您的情况下,建议您密切关注所使用库的更新。
从最后一个警告开始看,似乎是来自 pandas 的,并记录在 pyLDAvis 中,可以在这里查看。
其余的警告来自于 pyparsing 模块,但似乎您并没有显式导入它。可能是您使用的某个库有依赖关系,使用了一些相对旧且已废弃的功能。为了消除警告,建议您先检查是否升级库有帮助。祝好运!

非常感谢!我没有意识到问题出在 pyLDAvis 上而不是 gensim 上。这个链接解决了我的问题(或者至少现在我理解了问题所在)。干杯! - HLRA

0
import warnings   
warnings.filterwarnings("ignore")  
pyLDAvis.enable_notebook()

尝试使用这个


你的回答可以通过提供更多的支持性信息来改进。请编辑以添加更多细节,如引用或文档,以便其他人可以确认您的回答是正确的。您可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接