今天聊点硬货,教大家用 Thulac 这套清华出的中文词法分析工具包,搞定中文分词、词性标注啥的。听起来高深?别急,咱一步步拆开,学完就能直接上手撸代码。
安装 Thulac
先装上工具再说,Thulac 的安装其实挺简单。
Python 环境都配好了吧?有些小伙伴可能懵:“啥是 Python 环境?” 别急,简单讲,Python 就是 Thulac 跑起来的发动机,没这玩意儿,啥都动不了。
pip install thulac
一行命令搞定。如果网络不给力,换个国内镜像,比如:
pip install thulac -i https://pypi.tuna.tsinghua.edu.cn/simple
温馨提示:别漏了 pip 和 -i,漏一个,报错怼你没商量。
分词:拆字成词小能手
分词就是把长串的中文句子拆成一个个小词。举个例子:
import thulac
thu = thulac.thulac()
text = "清华大学很牛,推出了Thulac中文词法分析工具。"
result = thu.cut(text, text=True)
print(result)
运行一下,输出大概是这样:
清华大学/nt 很/d 牛/a ,/w 推出/v 了/u Thulac/n 中文/n 词法/n 分析/v 工具/n 。/w
看懂了吧?句子被拆成了一个个词,还带了 词性标注(比如 /n 表示名词,/v 表示动词)。这就很方便后续分析,比如统计词频、过滤特定词汇啥的。
温馨提示:默认结果是字符串,如果想要分词后的列表形式,把 text=True 改成 text=False 就行。
词性标注:帮词分门别类
词性标注干啥的?简单说就是告诉你每个词的角色。像这样:
名词:人、事、物(比如“清华大学”)
动词:行为动作(比如“推出”)
形容词:描述性词语(比如“牛”)
有时候,你可能只关心某种词,比如找出句子里的名词,可以这样:
thu = thulac.thulac()
text = "清华大学很牛,推出了Thulac中文词法分析工具。"
result = thu.cut(text, text=False)
nouns = [word[0] for word in result if word[1] == 'n']
print(nouns)
输出是这样的:
['清华大学', 'Thulac', '中文', '词法', '工具']
这个逻辑啥意思?分词后生成的是 [词, 词性] 的列表,我们把词性是 'n' 的全挑出来。
用户词典:自定义你的词语
有时候,默认的分词规则不够灵活,比如 “OpenAI” 可能被拆成 “Open”和 “AI”,咋办?Thulac 支持 用户词典,自己加规则。
创建个 user_dict.txt 文件,内容像这样:
OpenAI
ChatGPT
然后加载:
thu = thulac.thulac(user_dict="user_dict.txt")
text = "OpenAI开发了ChatGPT,很有趣。"
result = thu.cut(text, text=True)
print(result)
输出效果:
OpenAI/n 开发/v 了/u ChatGPT/n ,/w 很/d 有趣/a 。/w
是不是顺眼多了?
温馨提示:用户词典的每一行是一个词,注意别写错。
批量处理:让机器跑得更快
如果你有一堆文本要处理,单个单个分词就太慢了。Thulac 提供了文件批量处理模式,一次搞定:
thulac -i input.txt -o output.txt
input.txt 是你的原始文本,output.txt 是分词后的结果。
温馨提示:文件路径要写对,否则工具可能“假装看不到”。
实际应用场景
文本分类:比如判断用户评论是正面的还是负面的,用分词结果做输入数据效果更好。
搜索引擎:分词能帮你提高搜索精准度,比如“清华大学排名”和“清华大学录取分数”会被拆成不同的关键词。
关键词提取:把文章里的重点词挑出来,省得你人工挑半天。
踩坑提示
版本问题:Thulac 需要 Python 3.x,如果用的是 2.x,可能会各种奇怪报错。
编码问题:处理中文文件时,确保是 UTF-8 编码,否则分词结果可能是乱码。
词性标注不全:有些词的词性 Thulac 不支持自定义,遇到这种情况,只能另想办法。
用 Thulac,中文处理变得省时省力,效果还不错。现在轮到你试试了,拿自己的句子跑两遍,感受下这工具的威力!