中分词文
中文分词是中文信息处理的基本技术,指的是将一个汉字序列切分成一个一个单独的词。我们知道,英文单词之间是以空格作为分界符的,而中文是以字为基本的书写单位,词语之间没有明显的区分标记。在搜索引擎、机器翻译、语音合成等技术中,都需要用到中文分词。
中文分词的方法有很多种,今天我们要学习一个国内使用人数最多的中文分词工具——jieba 分词jieba 不是一个内置模块,所以在使用前要先通过代码 pip install jieba 在终端中进行安装。如果在自己电脑上安装不上或安装缓慢,可在命令后添加 -i https://pypi.tuna.tsinghua.edu.cn/simple/ 进行加速。
jieba.lcut()
代码的作用
在 jieba 模块中,分词的方法有很多种,在这里,我们使用 jieba.lcut()。 jieba.lcut() 将字符串切分为词。
想要使用 jieba 分词,首先导入 jieba 模块。 将需要分词的字符串传入 jieba.lcut(),将语句进行切分。
完成后返回列表,赋值给变量 words。
示例代码:
# 导入jieba模块
import jieba
# 将"我喜欢夜曲编程",赋值给变量text
text = "我喜欢夜曲编程"
# 将text传入jieba.lcut(),赋值给words
words = jieba.lcut(text)
# 使用print输出words
print(words)
总结:
回到项目中,上节课我们已经完成了内容的提取并输出了短评。
接着,首先需要导入 jieba 模块。把变量 contentString 传入 jieba.lcut() 进行分词,将返回的列表赋值给 words。
逐步完善代码:
# 使用import导入requests模块
import requests
# 从bs4中导入BeautifulSoup
from bs4 import BeautifulSoup
# 使用import导入jieba模块
import jieba
# 将豆瓣电影评论URL地址,赋值给变量url
url = "https://movie.douban.com/subject/2129039/comments?sort=new_score&status=P"
# 将User-Agent以字典键对形式赋值给headers
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"}
# 将 url 和 headers参数,添加进requests.get()中,将字典headers传递headers参数,给赋值给response
response = requests.get(url, headers=headers)
# 将服务器响应内容转换为字符串形式,赋值给html
html = response.text
# 使用BeautifulSoup()传入变量html和解析器lxml,赋值给soup
soup = BeautifulSoup(html, "lxml"
# 使用find_all()查询soup中class="short"的节点,赋值给content_all
content_all = soup.find_all(class_="short")
# for循环遍历content_all
for content in content_all:
# 获取每个节点中标签内容,赋值给contentString
contentString = content.string
# 使用jieba.lcut()将contentString进行分词,赋值给words
words = jieba.lcut(contentString)
# 使用print输出words
print(words)
我们使用 jieba 模块将电影短评拆分成词。由于 jieba.lcut() 函数返回的结果是列表,在这里,有多少条电影短评,就有多少个列表生成。
为了方便接下来对所有电影短评作出词频分析,我们可以将多个列表合并成一个列表。
在 Python 中合并列表是非常常见的操作,方法也有很多,在这里,我们学习通过 + 运算直接拼接。如代码所示,将列表 list1 和列表 list2 使用 + 运算,赋值给 result,即可将两个列表合并。
示例如下:
列表合并。
在这里,我们可以新建一个列表 wordList。想要合并所有列表 words,可以将列表 wordList 与列表 words 用 + 运算符合并,并赋值给列表 wordList。
打卡第七天