基于大数据的科研热点分析与挖掘系统
温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :)
1. 项目简介
科研活动的快速发展产生了大量的学术文献,如何从这些文献中提炼出有价值的科研热点和趋势成为了一个重要的问题。本项目旨在开发一个基于大数据的科研热点分析可视化系统,采集人工智能领域 ACL、CL、EMNLP 近几年顶级会议论文,利用自然语言处理技术和机器学习算法,对科研文献进行分析,并通过可视化的方式展示科研热点和发展趋势,帮助科研工作者更好地把握研究方向。
2. 学术论文采集
利用 requests 工具采集 ACL、CL、EMNLP、CONLL、SEMEVAL 等顶级人工智能会议2016-2024年近9年发表的学术论文:
for conference in ['acl', 'cl', 'emnlp', 'ws', 'conll', 'iwslt', 'semeval']:
start_year_month = datetime(year=2016, month=1, day=1)
year_month = start_year_month
now_year_month_str = datetime.now().strftime("%Y%m")
year_month_str = year_month.strftime("%Y")
while year_month_str <= now_year_month_str:
url = base_url.format(conference, year_month_str)
print('-->', url)
resp = requests.get(url)
resp.encoding = 'utf8'
soup = BeautifulSoup(resp.text, 'lxml')
papers_blocks = soup.find_all(name='p', class_='align-items-stretch')
if papers_blocks is None or len(papers_blocks) == 0:
break
for block in papers_blocks:
next_tag = block.find_next_sibling()
if next_tag is None or next_tag.name != 'div':
continue
strong = block.find(name='strong')
# 标题
title = strong.text.strip()
# 论文链接
paper_link = "https://aclanthology.org" + strong.a['href']
# 论文摘要
# 省略部分代码
year_month = year_month + relativedelta(years=1)
year_month_str = year_month.strftime("%Y")
time.sleep(1)
3. LDA主题建模
LDA(隐狄利克雷分配)是一种常用的无监督机器学习算法,用于从文档集合中发现潜在的主题结构。首先初始化一个空列表 paper_abstracts
用于存储处理后的论文摘要。接着,遍历每篇论文的摘要,对其进行分词处理,过滤掉停用词和长度小于等于4个字符的单词,并将处理后的单词列表存储在 paper_abstracts
中。然后,使用 gensim.corpora.Dictionary
创建一个词典对象 dictionary
,将每个唯一单词映射到一个整数ID,并将文档转换为词袋表示形式(Document-Term Matrix)。随后,导入 gensim.models.ldamodel.LdaModel
类,并使用该类初始化LDA模型,设置必要的参数,包括文档-词矩阵 doc_term_matrix
、词典对象 dictionary
、主题数量(例如8个主题)、随机种子(以保证结果的可复现性)、每次处理的文档数量以及遍历整个语料库的次数。通过训练LDA模型,最终得到每个主题的单词分布和每篇文档的主题分布。
# 初始化一个空列表,用于存储处理后的论文摘要
paper_abstracts = []
# 遍历每篇论文的摘要
for paper in papers:
# 取出每篇论文的第一个元素(假设papers是一个包含多个元素的列表)
paper = paper[0]
# 分词处理:将摘要字符串按空格分割成单词列表,并过滤掉停用词和长度小于等于4的单词
tokens = [token for token in paper.split(' ') if token not in STOPWORDS and len(token) > 4]
# 将处理后的单词列表添加到paper_abstracts列表中
paper_abstracts.append(tokens)
# 创建一个词典对象,用于映射单词到唯一的整数ID
dictionary = corpora.Dictionary(paper_abstracts)
# 将文档转换为词袋表示形式,即每个文档对应一个词频向量
doc_term_matrix = [dictionary.doc2bow(rev) for rev in paper_abstracts]
# 导入LDA模型类
LDA = gensim.models.ldamodel.LdaModel
# 构建LDA模型
lda_model = LDA(corpus=doc_term_matrix[:10000], id2word=dictionary, num_topics=8, random_state=100,
chunksize=200, passes=100)
4. 基于大数据的科研热点分析与挖掘系统
4.1 系统首页
4.2 顶会论文分类
4.3 学术热点分析
4.4 学术热点搜索
4.5 学术研究主题建模
5. 结论
科研活动的快速发展产生了大量的学术文献,如何从这些文献中提炼出有价值的科研热点和趋势成为了一个重要的问题。本项目旨在开发一个基于大数据的科研热点分析可视化系统,采集人工智能领域 ACL、CL、EMNLP 近几年顶级会议论文,利用自然语言处理技术和机器学习算法,对科研文献进行分析,并通过可视化的方式展示科研热点和发展趋势,帮助科研工作者更好地把握研究方向。
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。技术交流、源码获取认准下方 CSDN 官方提供的师姐 QQ 名片 :)
精彩专栏推荐订阅:
1.Python-数据挖掘实战案例
2.Python-计算机视觉实战案例
3.Python-管理系统实战案例