Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >物以类聚人以群分,通过GensimLda文本聚类算法构建人工智能个性化推荐系统(Python3.10)

物以类聚人以群分,通过GensimLda文本聚类算法构建人工智能个性化推荐系统(Python3.10)

作者头像
用户9127725
发布于 2023-01-10 06:37:21
发布于 2023-01-10 06:37:21
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

    众所周知,个性化推荐系统能够根据用户的兴趣、偏好等信息向用户推荐相关内容,使得用户更感兴趣,从而提升用户体验,提高用户粘度,之前我们曾经使用协同过滤算法构建过个性化推荐系统,但基于显式反馈的算法就会有一定的局限性,本次我们使用无监督的Lda文本聚类方式来构建文本的个性化推荐系统。

    推荐算法:协同过滤/Lda聚类

    我们知道,协同过滤算法是一种基于用户的历史行为来推荐物品的算法。协同过滤算法利用用户之间的相似性来推荐物品,如果两个用户对某些物品的评分相似,则协同过滤算法会将这两个用户视为相似的,并向其中一个用户推荐另一个用户喜欢的物品。

    说白了,它基于用户的显式反馈,什么是显式反馈?举个例子,本如本篇文章,用户看了之后,可能会点赞,也可能会疯狂点踩,或者写一些关于文本的评论,当然评论内容可能是负面、正面或者中性,所有这些用户给出的行为,都是显式反馈,但如果用户没有反馈出这些行为,就只是看了看,协同过滤算法的效果就会变差。

    LDA聚类是一种文本聚类算法,它通过对文本进行主题建模来聚类文本。LDA聚类算法在聚类文本时,不考虑用户的历史行为,而是根据文本的内容和主题来聚类。

    说得通俗一点,协同过滤是一种主动推荐,系统根据用户历史行为来进行内容推荐,而LDA聚类则是一种被动推荐,在用户还没有产生用户行为时,就已经开始推荐动作。

    LDA聚类的主要目的是将文本分为几类,使得每类文本的主题尽可能相似。

    LDA聚类算法的工作流程大致如下:

    1.对文本进行预处理,去除停用词等。

    2.使用LDA模型对文本进行主题建模,得到文本的主题分布。

    3.将文本按照主题分布相似性进行聚类。

    4.将聚类结果作为类标签,对文本进行分类。

    大体上,LDA聚类算法是一种自动将文本分类的算法,它通过对文本进行主题建模,将文本按照主题相似性进行聚类,最终实现文本的分类。

    Python3.10实现

    实际应用层面,我们需要做的是让主题模型能够识别在文本里的主题,并且挖掘文本信息中隐式信息,并且在主题聚合、从非结构化文本中提取信息。

    首先安装分词以及聚类模型库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip3 install jieba
pip3 install gensim

    随后进行分词操作,这里以笔者的几篇文章为例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import jieba
import pandas as pd
import numpy as np
title1="乾坤大挪移,如何将同步阻塞(sync)三方库包转换为异步非阻塞(async)模式?Python3.10实现。"
title2="Generator(生成器),入门初基,Coroutine(原生协程),登峰造极,Python3.10并发异步编程async底层实现"
title3="周而复始,往复循环,递归、尾递归算法与无限极层级结构的探究和使用(Golang1.18)"
title4="彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-JWT和中间件(Middleware)的使用EP07"
content = [title1,title2, title3,title4]


#分词
content_S = []
all_words = []
for line in content:
    current_segment = [w for w in jieba.cut(line) if len(w)>1]
    for x in current_segment:
        all_words.append(x)
    if len(current_segment) > 1 and current_segment != '\r\t':
        content_S.append(current_segment)
#分词结果转为DataFrame
df_content = pd.DataFrame({'content_S':content_S})

print(all_words)

    可以看到,这里通过四篇文章标题构建分词列表,最后打印分词结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
['乾坤', '挪移', '如何', '同步', '阻塞', 'sync', '三方', '库包', '转换', '异步', '阻塞', 'async', '模式', 'Python3.10', '实现', 'Generator', '生成器', '入门', '初基', 'Coroutine', '原生', '协程', '登峰造极', 'Python3.10', '并发', '异步', '编程', 'async', '底层', '实现', '周而复始', '往复', '循环', '递归', '递归', '算法', '无限极', '层级', '结构', '探究', '使用', 'Golang1.18', '彩虹', '女神', '长空', 'Go', '语言', '进阶', 'Go', '语言', '高性能', 'Web', '框架', 'Iris', '项目', '实战', 'JWT', '中间件', 'Middleware', '使用', 'EP07']

    接着就可以针对这些词进行聚类操作,我们可以先让ChatGPT帮我们进行聚类看看结果:

    可以看到,ChatGPT已经帮我们将分词结果进行聚类操作,分为两大类:Python和Golang。

    严谨起见,我们可以针对分词结果进行过滤操作,过滤内容是停用词,停用词是在文本分析自然语言处理等应用中,用来过滤掉不需要的词的。通常来说,停用词是指在英文中的介词、代词、连接词等常用词,在中文中的助词、介词、连词等常用词:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
———
》),
)÷(1-
”,
)、
=(
:
→
℃ 
&
*
一一
~~~~.../
-- 
』
=″
【
[*]
}>
[⑤]]
[①D]
c]
ng昉
*
//
[
]
[②e]
[②g]
={
}
,也 
‘
A
[①⑥]
[②B] 
[①a]
[④a]
[①③]
[③h]
③]
1. 
-- 
[②b]
’‘ 
××× 
[①⑧]
0:2 
=[
[⑤b]
[②c] 
[④b]
[②③]
[③a]
[④c]
[①⑤]
[①⑦]
[①g]
∈[ 
[①⑨]
[①④]
[①c]
[②f]
[②⑧]
[②①]
[①C]
[③c]
[③g]
[②⑤]
[②②]
一.
[①h]
.数
[]
[①B]
数/
[①i]
[③e]
[①①]
[④d]
[④e]
[③b]
[⑤a]
[①A]
[②⑧]
[②⑦]
[①d]
[②j]
〕〔
][
://
′∈
[②④
[⑤e]
12%
b]
...
...................
…………………………………………………③
ZXFITL
[③F]
」
[①o]
]∧′=[ 
∪φ∈
′|
{-
②c
}
[③①]
R.L.
[①E]
Ψ
-[*]-
↑
.日 
[②d]
[②
[②⑦]
[②②]
[③e]
[①i]
[①B]
[①h]
[①d]
[①g]
[①②]
[②a]
f]
[⑩]
a]
[①e]
[②h]
[②⑥]
[③d]
[②⑩]
e]
〉
】
元/吨
[②⑩]
2.3%
5:0  
[①]
::
[②]
[③]
[④]
[⑤]
[⑥]
[⑦]
[⑧]
[⑨] 
……
——
?
、
。
“
”
《
》
!
,
:
;
?
.
,
.
'
? 
·
———
──
?<
>
(
)
〔
〕
[
]
(
)
-
+
~
×
/
/
①
②
③
④
⑤
⑥
⑦
⑧
⑨
⑩
Ⅲ
В
"
;
#
@
γ
μ
φ
φ.
× 
Δ
■
▲
sub
exp 
sup
sub
Lex 
#
%
&
'
+
+ξ
++
-
-β
<
<±
<Δ
<λ
<φ
<<
=
=
=☆
=-
>
>λ
_
~±
~+
[⑤f]
[⑤d]
[②i]
≈ 
[②G]
[①f]
LI
㈧ 
[-
......
〉
[③⑩]
第二
一番
一直
一个
一些
许多
种
有的是
也就是说
末##末
啊
阿
哎
哎呀
哎哟
唉
俺
俺们
按
按照
吧
吧哒
把
罢了
被
本
本着
比
比方
比如
鄙人
彼
彼此
边
别
别的
别说
并
并且
不比
不成
不单
不但
不独
不管
不光
不过
不仅
不拘
不论
不怕
不然
不如
不特
不惟
不问
不只
朝
朝着
趁
趁着
乘
冲
除
除此之外
除非
除了
此
此间
此外
从
从而
打
待
但
但是
当
当着
到
得
的
的话
等
等等
地
第
叮咚
对
对于
多
多少
而
而况
而且
而是
而外
而言
而已
尔后
反过来
反过来说
反之
非但
非徒
否则
嘎
嘎登
该
赶
个
各
各个
各位
各种
各自
给
根据
跟
故
故此
固然
关于
管
归
果然
果真
过
哈
哈哈
呵
和
何
何处
何况
何时
嘿
哼
哼唷
呼哧
乎
哗
还是
还有
换句话说
换言之
或
或是
或者
极了
及
及其
及至
即
即便
即或
即令
即若
即使
几
几时
己
既
既然
既是
继而
加之
假如
假若
假使
鉴于
将
较
较之
叫
接着
结果
借
紧接着
进而
尽
尽管
经
经过
就
就是
就是说
据
具体地说
具体说来
开始
开外
靠
咳
可
可见
可是
可以
况且
啦
来
来着
离
例如
哩
连
连同
两者
了
临
另
另外
另一方面
论
嘛
吗
慢说
漫说
冒
么
每
每当
们
莫若
某
某个
某些
拿
哪
哪边
哪儿
哪个
哪里
哪年
哪怕
哪天
哪些
哪样
那
那边
那儿
那个
那会儿
那里
那么
那么些
那么样
那时
那些
那样
乃
乃至
呢
能
你
你们
您
宁
宁可
宁肯
宁愿
哦
呕
啪达
旁人
呸
凭
凭借
其
其次
其二
其他
其它
其一
其余
其中
起
起见
起见
岂但
恰恰相反
前后
前者
且
然而
然后
然则
让
人家
任
任何
任凭
如
如此
如果
如何
如其
如若
如上所述
若
若非
若是
啥
上下
尚且
设若
设使
甚而
甚么
甚至
省得
时候
什么
什么样
使得
是
是的
首先
谁
谁知
顺
顺着
似的
虽
虽然
虽说
虽则
随
随着
所
所以
他
他们
他人
它
它们
她
她们
倘
倘或
倘然
倘若
倘使
腾
替
通过
同
同时
哇
万一
往
望
为
为何
为了
为什么
为着
喂
嗡嗡
我
我们
呜
呜呼
乌乎
无论
无宁
毋宁
嘻
吓
相对而言
像
向
向着
嘘
呀
焉
沿
沿着
要
要不
要不然
要不是
要么
要是
也
也罢
也好
一
一般
一旦
一方面
一来
一切
一样
一则
依
依照
矣
以
以便
以及
以免
以至
以至于
以致
抑或
因
因此
因而
因为
哟
用
由
由此可见
由于
有
有的
有关
有些
又
于
于是
于是乎
与
与此同时
与否
与其
越是
云云
哉
再说
再者
在
在下
咱
咱们
则
怎
怎么
怎么办
怎么样
怎样
咋
照
照着
者
这
这边
这儿
这个
这会儿
这就是说
这里
这么
这么点儿
这么些
这么样
这时
这些
这样
正如
吱
之
之类
之所以
之一
只是
只限
只要
只有
至
至于
诸位
着
着呢
自
自从
自个儿
自各儿
自己
自家
自身
综上所述
总的来看
总的来说
总的说来
总而言之
总之
纵
纵令
纵然
纵使
遵照
作为
兮
呃
呗
咚
咦
喏
啐
喔唷
嗬
嗯
嗳

    这里使用哈工大的停用词列表。

    首先加载停用词列表,然后进行过滤操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#去除停用词
def drop_stopwords(contents,stopwords):
    contents_clean = []
    all_words = []
    for line in contents:
        line_clean = []
        for word in line:
            if word in stopwords:
                continue
            line_clean.append(word)
            all_words.append(word)
        contents_clean.append(line_clean)
    return contents_clean,all_words

#停用词加载
stopwords = pd.read_table('stop_words.txt',names = ['stopword'],quoting = 3)
contents = df_content.content_S.values.tolist()

contents_clean,all_words = drop_stopwords(contents,stopwords)

    接着交给Gensim进行聚类操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from gensim import corpora,models,similarities
import gensimdictionary = corpora.Dictionary(contents_clean)
corpus = [dictionary.doc2bow(sentence) for sentence in contents_clean]
lda = gensim.models.ldamodel.LdaModel(corpus=corpus,id2word=dictionary,num_topics=2,random_state=3)

#print(lda.print_topics(num_topics=2, num_words=4))

for e, values in enumerate(lda.inference(corpus)[0]):
    print(content[e])
    for ee, value in enumerate(values):
        print('\t分类%d推断值%.2f' % (ee, value))

    这里使用LdaModel模型进行训练,分类设置(num_topics)为2种,随机种子(random_state)为3,在训练机器学习模型时,很多模型的训练过程都会涉及到随机数的生成,例如随机梯度下降法(SGD)就是一种随机梯度下降的优化算法。在训练过程中,如果不设置random_state参数,则每次训练结果可能都不同。而设置random_state参数后,每次训练结果都会相同,这就方便了我们在调参时对比模型的效果。如果想要让每次训练的结果都随机,可以将random_state参数设置为None。

    程序返回:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[['乾坤', '挪移', '同步', '阻塞', 'sync', '三方', '库包', '转换', '异步', '阻塞', 'async', '模式', 'Python3.10', '实现'], ['Generator', '生成器', '入门', '初基', 'Coroutine', '原生', '协程', '登峰造极', 'Python3.10', '并发', '异步', '编程', 'async', '底层', '实现'], ['周而复始', '往复', '循环', '递归', '递归', '算法', '无限极', '层级', '结构', '探究', '使用', 'Golang1.18'], ['彩虹', '女神', '长空', 'Go', '语言', '进阶', 'Go', '语言', '高性能', 'Web', '框架', 'Iris', '项目', '实战', 'JWT', '中间件', 'Middleware', '使用', 'EP07']]
乾坤大挪移,如何将同步阻塞(sync)三方库包转换为异步非阻塞(async)模式?Python3.10实现。
        分类0推断值0.57
        分类1推断值14.43
Generator(生成器),入门初基,Coroutine(原生协程),登峰造极,Python3.10并发异步编程async底层实现
        分类0推断值0.58
        分类1推断值15.42
周而复始,往复循环,递归、尾递归算法与无限极层级结构的探究和使用(Golang1.18)
        分类0推断值12.38
        分类1推断值0.62
彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-JWT和中间件(Middleware)的使用EP07
        分类0推断值19.19
        分类1推断值0.81

    可以看到,结果和ChatGPT聚类结果一致,前两篇为一种分类,后两篇为另外一种分类。

    随后可以将聚类结果保存为模型文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
lda.save('mymodel.model')

    以后有新的文章发布,直接对新的文章进行分类推测即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from gensim.models import  ldamodel
import pandas as pd
import jieba
from gensim import corpora

doc0="巧如范金,精比琢玉,一分钟高效打造精美详实的Go语言技术简历(Golang1.18)"
# 加载模型
lda = ldamodel.LdaModel.load('mymodel.model')

content = [doc0]

#分词
content_S = []
for line in content:
    current_segment = [w for w in jieba.cut(line) if len(w)>1]
    if len(current_segment) > 1 and current_segment != '\r\t':
        content_S.append(current_segment)
#分词结果转为DataFrame
df_content = pd.DataFrame({'content_S':content_S})


#去除停用词
def drop_stopwords(contents,stopwords):
    contents_clean = []
    all_words = []
    for line in contents:
        line_clean = []
        for word in line:
            if word in stopwords:
                continue
            line_clean.append(word)
            all_words.append(word)
        contents_clean.append(line_clean)
    return contents_clean,all_words

#停用词加载
stopwords = pd.read_table('stop_words.txt',names = ['stopword'],quoting = 3)
contents = df_content.content_S.values.tolist()

contents_clean,all_words = drop_stopwords(contents,stopwords)


dictionary = corpora.Dictionary(contents_clean)

word = [w for w in jieba.cut(doc0)]

bow = dictionary.doc2bow(word)
print(lda.get_document_topics(bow))

    程序返回:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
➜  nlp_chinese /opt/homebrew/bin/python3.10 "/Users/liuyue/wodfan/work/nlp_chinese/new_text.py"
Building prefix dict from the default dictionary ...
Loading model from cache /var/folders/5x/gpftd0654bv7zvzyv39449rc0000gp/T/jieba.cache
Loading model cost 0.264 seconds.
Prefix dict has been built successfully.
[(0, 0.038379338), (1, 0.9616206)]

    这里显示文章推断结果为分类2,也就是Golang类型的文章。

    完整调用逻辑:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import jieba
import pandas as pd
import numpy as np
from gensim.models import  ldamodel
from gensim import corpora,models,similarities
import gensim


class LdaRec:

    def __init__(self,cotent:list) -> None:
        
        self.content = content
        self.contents_clean = []
        self.lda = None

    def test_text(self,content:str):

        self.lda = ldamodel.LdaModel.load('mymodel.model')
        self.content = [content]

        #分词
        content_S = []
        for line in self.content:
            current_segment = [w for w in jieba.cut(line) if len(w)>1]
            if len(current_segment) > 1 and current_segment != '\r\t':
                content_S.append(current_segment)
        #分词结果转为DataFrame
        df_content = pd.DataFrame({'content_S':content_S})

        contents = df_content.content_S.values.tolist()

        dictionary = corpora.Dictionary(contents)

        word = [w for w in jieba.cut(content)]

        bow = dictionary.doc2bow(word)
        print(self.lda.get_document_topics(bow))


    # 训练
    def train(self,num_topics=2,random_state=3):

        dictionary = corpora.Dictionary(self.contents_clean)
        corpus = [dictionary.doc2bow(sentence) for sentence in self.contents_clean]
        self.lda = gensim.models.ldamodel.LdaModel(corpus=corpus,id2word=dictionary,num_topics=num_topics,random_state=random_state)

        for e, values in enumerate(self.lda.inference(corpus)[0]):
            print(self.content[e])
            for ee, value in enumerate(values):
                print('\t分类%d推断值%.2f' % (ee, value))


    # 过滤停用词
    def drop_stopwords(self,contents,stopwords):
        contents_clean = []
        for line in contents:
            line_clean = []
            for word in line:
                if word in stopwords:
                    continue
                line_clean.append(word)
            contents_clean.append(line_clean)
        return contents_clean

    def cut_word(self) -> list:
        #分词
        content_S = []
        for line in self.content:
            current_segment = [w for w in jieba.cut(line) if len(w)>1]
            if len(current_segment) > 1 and current_segment != '\r\t':
                content_S.append(current_segment)

        #分词结果转为DataFrame
        df_content = pd.DataFrame({'content_S':content_S})

        # 停用词列表
        stopwords = pd.read_table('stop_words.txt',names = ['stopword'],quoting = 3)

        contents = df_content.content_S.values.tolist()
        stopwords = stopwords.stopword.values.tolist()

        self.contents_clean = self.drop_stopwords(contents,stopwords)


if __name__ == '__main__':
    
    title1="乾坤大挪移,如何将同步阻塞(sync)三方库包转换为异步非阻塞(async)模式?Python3.10实现。"
    title2="Generator(生成器),入门初基,Coroutine(原生协程),登峰造极,Python3.10并发异步编程async底层实现"
    title3="周而复始,往复循环,递归、尾递归算法与无限极层级结构的探究和使用(Golang1.18)"
    title4="彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-JWT和中间件(Middleware)的使用EP07"
    content = [title1,title2, title3,title4]

    lr = LdaRec(content)

    lr.cut_word()

    lr.train()

    lr.lda.save('mymodel.model')

    lr.test_text("巧如范金,精比琢玉,一分钟高效打造精美详实的Go语言技术简历(Golang1.18)")

    至此,基于聚类的推荐系统构建完毕,每一篇文章只需要通过既有分类模型进行训练,推断分类之后,给用户推送同一分类下的文章即可,截止本文发布,该分类模型已经在本站进行落地实践:

    结语

    金无足赤,LDA聚类算法也不是万能的,LDA聚类算法有许多超参数,包括主题个数、学习率、迭代次数等,这些参数的设置对结果有很大影响,但是很难确定最优参数,同时聚类算法的时间复杂度是O(n^2)级别的,在处理大规模文本数据时,计算速度较慢,反之,在样本数据较少的情况下,模型的泛化能力较差。最后,奉上项目地址,与君共觞:https://github.com/zcxey2911/Lda-Gensim-Recommended-System-Python310

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于LDA的文本主题聚类Python实现
LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,也称为一个三层贝叶斯概率模型,包含词、主题和文档三层结构。所谓生成模型,就是说,我们认为一篇文章的每个词都是通过“以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到。文档到主题服从多项式分布,主题到词服从多项式分布。
里克贝斯
2021/05/21
3.9K0
基于LDA的文本主题聚类Python实现
【NLP基础】NLP关键字提取技术之LDA算法原理与实践
人们是如何从大量文本资料中便捷得浏览和获取信息?答案你肯定会说通过关键字。仔细想想,我们人类是怎么提取关键词?我们从小就接触语言,语法,当听到或者看到一句话时,我们大脑自动会对这句话按规则分词(小学是不是做过断句的训练),还记得语文老师讲过,一句话中主语(名词),谓语(动词),宾语(名词)通常就是重点,这样我们大脑从小就会根据词性和语法对句中词进行打标签,训练分类器,随着我们接触到的语料越来越多,分类器也越来越准确(如果你是从事语言学的,那你的分类器就更准)。仅仅通过词性和语法,会在长文本中出现一个问题,因为一篇文章中会出现很多主语,谓语,宾语,不可能所有的这些词都是关键词,这样我们大脑是怎么处理的,如果我们对一篇文章的背景和主题很熟悉的话,我们会很准确得从一篇文章中提取关键词,但当我们接触一篇比较陌生的文章,我们往往很难准确提取关键词。
zenRRan
2019/07/25
3.8K1
主题模型LDA
主题模型(topic model)是以非监督学习的方式对文集的隐含语义结构(latent semantic structure)进行聚类(clustering)的统计模型。
润森
2019/11/07
1.9K1
Python主题建模详细教程(附代码示例)
主题建模是自然语言处理(NLP)和文本挖掘中常用的技术,用于提取给定文本的主题。利用主题建模,我们可以扫描大量的非结构化文本以检测关键词、主题和主题。
磐创AI
2023/08/29
1.1K0
Python主题建模详细教程(附代码示例)
python 舆情分析 nlp主题分析 (3) --gensim库的简单使用
python 舆情分析 nlp主题分析 (1) 待续: https://www.cnblogs.com/cycxtz/p/13663895.html
forxtz
2020/10/19
3K0
python 舆情分析 nlp主题分析 (3) --gensim库的简单使用
使用深度学习阅读和分类扫描文档
首先,我们要做的第一件事是创建一个简单的数据集,这样我们就可以测试我们工作流程的每一部分。理想情况下,我们的数据集将包含各种易读性和时间段的扫描文档,以及每个文档所属的高级主题。我找不到具有这些精确规格的数据集,所以我开始构建自己的数据集。我决定的高层次话题是政府、信件、吸烟和专利,随机的选择这些主要是因为每个地区都有各种各样的扫描文件。
小白学视觉
2022/02/10
8740
使用深度学习阅读和分类扫描文档
独家 | 使用Python的LDA主题建模(附链接)
主题建模包括从文档术语中提取特征,并使用数学结构和框架(如矩阵分解和奇异值分解)来生成彼此可区分的术语聚类(cluster)或组,这些单词聚类继而形成主题或概念。
数据派THU
2021/04/07
5.6K0
python文本相似度计算
步骤 分词、去停用词 词袋模型向量化文本 TF-IDF模型向量化文本 LSI模型向量化文本 计算相似度 理论知识 两篇中文文本,如何计算相似度?相似度是数学上的概念,自然语言肯定无法完成,所有要把文本转化为向量。两个向量计算相似度就很简单了,欧式距离、余弦相似度等等各种方法,只需要中学水平的数学知识。 那么如何将文本表示成向量呢? 词袋模型 最简单的表示方法是词袋模型。把一篇文本想象成一个个词构成的,所有词放入一个袋子里,没有先后顺序、没
机器学习AI算法工程
2018/03/14
1.7K0
python文本相似度计算
sklearn+gensim︱jieba分词、词袋doc2bow、TfidfVectorizer
版权声明:博主原创文章,微信公众号:素质云笔记,转载请注明来源“素质云博客”,谢谢合作!! https://blog.csdn.net/sinat_26917383/article/details/71436563
悟乙己
2019/05/26
3.8K0
实战关键词提取
关键词是代表文章重要内容的一组词,在文献检索、自动文摘、文本聚类/分类等方面有着重要的应用。现实中大量的文本不包含关键词,这使得便捷获取文本信息更困难,所以自动提取关键词技术具有重要的价值和意义。
伊泽瑞尔
2022/05/31
8610
实战关键词提取
使用Gensim进行主题建模(一)
主题建模是一种从大量文本中提取隐藏主题的技术。Latent Dirichlet Allocation(LDA)是一种流行的主题建模算法,在Python的Gensim包中具有出色的实现。然而,挑战在于如何提取清晰,隔离和有意义的高质量主题。这在很大程度上取决于文本预处理的质量以及找到最佳主题数量的策略。本教程试图解决这两个问题。
银河1号
2019/05/15
4.3K0
python文本相似度计算
两篇中文文本,如何计算相似度?相似度是数学上的概念,自然语言肯定无法完成,所有要把文本转化为向量。两个向量计算相似度就很简单了,欧式距离、余弦相似度等等各种方法,只需要中学水平的数学知识。
周小董
2019/03/25
5.1K0
python文本相似度计算
python之Gensim库详解
Gensim是一个用于自然语言处理的Python库,它提供了一系列工具,用于从文本语料库中提取语义信息、进行文本处理和主题建模等任务。本教程将介绍如何使用Gensim库进行文本处理和主题建模,涵盖以下内容:
Michel_Rolle
2024/02/07
2.9K0
【自然语言处理】利用LDA对希拉里邮件进行主题分析
然后取出ExtractedBodyText的那一列,对每一行email进行噪声过滤,并返回一个对象:
西西嘛呦
2020/08/26
7520
基于LDA算法的Twitter文本分析
项目地址:https://www.kaggle.com/code/errearanhas/topic-modelling-lda-on-elon-tweets/notebook
皮大大
2024/06/04
1630
构建基于内容的数据科学文章推荐器
博客在数据科学界很受欢迎已经不是什么秘密了。通过这种方式,该领域反映了其在开源运动中的根源。在找到问题的创新解决方案之后,数据科学家似乎没有什么比写它更感兴趣了。数据科学界的博客是一个双赢的局面,作家从曝光中获益,读者从获得的知识中获益。
代码医生工作室
2019/09/10
8080
构建基于内容的数据科学文章推荐器
常见的文本分析大汇总
文本分析的核心是自然语言处理,本文只能说是冰山一角,但是对于日常挖掘有用的文本信息也还OK,但是如果想更深层次的挖掘文本信息,还是需要寻求专业算法工程师的帮助,例如NLP实验室的同学们~
HsuHeinrich
2023/08/10
4210
常见的文本分析大汇总
数据分析中,如何用Python轻松挖掘相似评论(文本)
我们现在做数据分析的时候,不可避免地会与文本数据打交道,今天跟大家分享在数据分析中,如何挖掘出相似的文本。
陈晨135
2021/12/26
1.1K0
数据分析中,如何用Python轻松挖掘相似评论(文本)
​用 Python 和 Gensim 库进行文本主题识别
从大量文本中自动提取人们谈论的主题(主题识别)是自然语言处理的基本应用之一。大型文本示例包括社交媒体订阅、消费者对酒店、电影和其他业务的评价、用户评论、新闻和客户发来的邮件。
数据STUDIO
2022/05/24
2.1K0
​用 Python 和 Gensim 库进行文本主题识别
python主题建模可视化LDA和T-SNE交互式可视化
我尝试使用Latent Dirichlet分配LDA来提取一些主题。本教程以自然语言处理流程为特色,从原始数据开始,准备,建模,可视化论文。
拓端
2021/01/13
1.3K0
相关推荐
基于LDA的文本主题聚类Python实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验