小编Rub*_*uby的帖子

使用LDA(主题模型):每个主题对单词的分布是相似的并且"平坦"

Latent Dirichlet Allocation(LDA)是一个主题模型,用于查找一堆文档的潜在变量(主题).我正在使用python gensim包,有两个问题:

--- 1,我打印出每个主题最常用的单词(我试过10,20,50个主题),发现单词的分布非常"平淡":意思是即使是最常用的单词也只有1%可能性...

--- 2,大多数主题都是相似的:意味着每个主题的最常用单词重叠很多,主题分享几乎相同的高频词组...

我想问题可能是由于我的文档:我的文档实际上属于特定类别,例如,它们都是介绍不同在线游戏的文档.对于我的情况,LDA是否仍然有效,因为文件本身非常相似,所以基于"词袋"的模型可能不是一个好的尝试方法?

有人能给我一些建议吗?谢谢!

python lda gensim topic-modeling

6
推荐指数
1
解决办法
844
查看次数

引发ConnectionError(连接中止,BadStatusLine):使用python和Last.fm API

我正在使用python调用Last.fm API来获取用户信息.获取大约7000个用户后会发生此错误:

Traceback (most recent call last):

  File "C:/Python27/My Codes & Data/scanuserinfo_100K_3.py", line 48, in <module>

    r=requests.get(host,params=params)

  File "C:\Python27\requests\api.py", line 60, in get

    return request('get', url, **kwargs)

  File "C:\Python27\requests\api.py", line 49, in request

    return session.request(method=method, url=url, **kwargs)

  File "C:\Python27\requests\sessions.py", line 457, in request

    resp = self.send(prep, **send_kwargs)

  File "C:\Python27\requests\sessions.py", line 569, in send

    r = adapter.send(request, **kwargs)

  File "C:\Python27\requests\adapters.py", line 407, in send

    raise ConnectionError(err, request=request)

ConnectionError: ('Connection aborted.', BadStatusLine("''",))
Run Code Online (Sandbox Code Playgroud)

这是我调用API的代码:

import requests

API_KEY='####my api key input here#####'

host='http://ws.audioscrobbler.com/2.0/'

params={'method':'user.getInfo', …
Run Code Online (Sandbox Code Playgroud)

python last.fm

5
推荐指数
1
解决办法
1660
查看次数

使用主题模型,我们应该如何设置“停用词”列表?

有一些标准的停用词列表,给出了要从语料库中删除的诸如“a the of not”之类的词。但是,我想知道,停止列表是否应该逐案更改?

比如我有10K的期刊文章,那么由于文章的结构,基本上每篇文章都会看到“介绍、评论、结论、页面”这样的词。我担心的是:我们应该从我们的语料库中删除这些词吗?(每个文档都有的词?)感谢每一个评论和建议。

stop-words lda topic-modeling text-classification

5
推荐指数
1
解决办法
5101
查看次数

如何让列表附加“无”(NOT NULL VALUE)

我有一个函数将根据函数中的 if 语句返回不同的值。返回的值将添加到现有列表中。但是,在函数中有一种情况,我希望函数什么都不做,即,现有列表将保持不变,就好像没有调用任何函数一样。目前我正在做的是以下,但我觉得这看起来很乱,想知道是否有更好的方法:

import requests
def myfun(url):
    response=requests.get(url)
    code=response.status_code
    if code==503:
       time.sleep(3*random.random())
       value=None
    else:
       html=response.content()
       value=html['some tag']
    return (value,code)

lists=[]
for url in [my url pool]:
     (value,code)=myfun(url)
     lists.append(value)
     if code==503:
        lists.pop()
Run Code Online (Sandbox Code Playgroud)

所以基本上我所做的是不断访问某个网页,读取一些值,然后将这些值放入一个不断增长的列表中。但是,有时我被阻止(其中给出了错误代码 503),然后我希望我的代码休眠一段时间然后继续前进。如果我收到 503 错误代码,则不会返回任何内容,因此不断增长的列表将相同。但是我不知道在调用函数时如何指定这种情况,所以我只是将返回的值设置为 None(或者可以是任何值),然后将它们添加到列表中,然后立即将它们从列表中删除。(所以我使用 append() 然后 pop() 如果代码是 503)

python

5
推荐指数
1
解决办法
1万
查看次数