(NLP学习)(三)搭建中文分词工具

该项目使用dic.xlsx作为词典,结合unigram概率word_prob,首先通过枚举方法初步搭建中文分词工具,然后利用维特比算法优化分词流程,提高准确率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明

此项目需要的数据:

  1. dic.xlsx: 词典包含了中文词,当做词典来用
  2. 以变量的方式提供了部分unigram概率 word_prob

基于枚举方法来搭建中文分词工具

import xlrd
import math


# TODO:读取字典。
print("Reading dic...")
# 获取一个Book对象
workbook = xlrd.open_workbook("dic.xlsx")

dic_words = []

# 获取一个sheet对象的列表
booksheet = workbook.sheet_by_index(0)

rows = booksheet.get_rows()
for row in rows:
    dic_words.append(row[0].value)

print("len:" + str(len(dic_words)))

# 以下是每一个单词出现的概率。为了问题的简化,我们只列出了一小部分单词的概率。 在这里没有出现的的单词但是出现在词典里的,统一把概率设置成为0.00001
# 比如 p("学院")=p("概率")=...0.00001

word_prob = {"北京":0.03,"的":0.08,"天":0.005,"气":0.005,"天气":0.06,"真":0.04,"好":0.05,"真好":0.04,"啊":0.01,"真好啊":0.02,
             "今":0.01,"今天":0.07,"课程":0.06,"内容":0.06,"有":0.05,"很":0.03,"很有":0.04,"意思":0.06,"有意思":0.005,"课":0.01,
             "程":0.005,"经常":0.08,"意见":0.08,"意":0.01,"见":0.005,"有意见":0.02,"分歧":0.04,"分":0.02, "歧":0.005}

# TODO:计算-log(x)
for word in word_prob.keys():
    word_prob[word]= round(-math.log(w
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值