学习目标
-
简要了解自然语言处理
-
利用TF-IDF实现一个推荐系统
-
了解语言模型和神经网络语言模型
-
使用word2vec & Fasttext编写项目代码
自然语言处理(NLP)
名如其意,就是利用我们的计算机对人类语言等等进行处理,满足我们的需求。
核心的任务分类(研究方向):
-
自然语言理解(NLU)
关键技术:句法分析,语义分析,意图识别,情感分析,上下⽂处理
典型应用:智能客服(意图识别),语音助手(语义分析),搜索引擎(语义分析) -
自然语言生成(NLG)
关键技术:模板⽣成,统计⽣成,逻辑到⽂本转换,⻛格控制,上下⽂处理
典型应用:新闻稿⾃动⽣成(统计⽣成),个性化推荐⽂案:(⻛格控制),聊天机器⼈回复(上下⽂处理)
发展趋势
预训练模型的影响:如 GPT-4、BERT 等⼤模型的发展,同时推动了 NLU 和 NLG⽅向的进步,⼤模型通过 “理解 + ⽣成” 能⼒实现多轮对话、⻓⽂本⽣成等功能。
多模态融合:结合图像、语⾳等信息提升理解与⽣成的准确性(如根据图⽚⽣成描述)。
低资源场景:针对⼩语种或特定领域(如法律、医疗)的 NLP 需求,开发更⾼效的模型。
通过 NLU 和 NLG 的结合,计算机正逐步实现与⼈类⾃然、流畅的交流,未来将在智能助⼿、⾃动化写作、数据分析等领域发挥更⼤作⽤。
TF-IDF实现推荐系统
IDF(Inverse Document Frequency)是一种在信息检索和文本挖掘中常用的权重因子,用于衡量一个词在文档集合中的重要性。IDF的值越高,表明这个词在文档集合中的出现频率越低,通常是更重要的关键词。
在实际应用中,IDF 通常与词频(TF,Term Frequency)结合使用,形成 TF-IDF(Term Frequency-Inverse Document Frequency)权重,用于评估一个词在文档中的相对重要性。
数据来源:北京大学开放研究数据平台
豆瓣Top250图书评论:
https://opendata.pku.edu.cn/dataset.xhtmlpersistentId=doi:10.18170/DVN/X20PS1
第一步:数据清洗
# 修复后的文件内容
fixed_txt = open('./doubanbook_top250_comments_fixed.txt',
mode='w', encoding='utf-8')
# 修复前文件内容
lines = [line for line in open(file='./doubanbook_top250_comments.txt',
mode='r', encoding='utf-8')]
print(len(lines), type(lines[0]), lines[0])
# 提取书名和评论(comments)
for index, line in enumerate(lines):
# 保存标题栏
if index == 0:
fixed_txt.write(line)
prev_line = ''
continue
# 分词
terms = line.split('\t')
# 当前行的书名等于上一行的书名
if terms[0] == prev_line.split('\t')[0]:
# 上一行是有效评论
if len(prev_line.split('\t')) == 6:
# 保存上一行记录
fixed_txt.write(prev_line+'\n')
prev_line = line.strip() # 保存当前行记录
else:
# 上一行不是有效评论,则当前行是有效评论
prev_line = ''
else:
# 当前行的书名不等于上一行的书名
# 上一行是新书的有效评论
if len(terms) == 6:
# 保存当前行记录
prev_line = line.strip()
else:
# 合并当前行与上一行
prev_line = prev_line + line.strip()
fixed_txt.close()
print('修复完成')
第二步:系统构建
import csv
import pickle
import jieba
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn