版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/Yellow_python/article/details/85264825
1、概述
- 文本挖掘流程
- 任务
-
1、识别文中的专有名称和短语
2、对实体进行归类和情感分析 - 示例
-
发货慢,包装也不严实,不过宝贝质量不错
↓↓↓【分词】
[‘发货’, ‘慢’, ‘,’, ‘包装’, ‘也’, ‘不’, ‘严实’, ‘,’, ‘不过’, ‘宝贝’, ‘质量’, ‘不错’]
↓↓↓【词性标注】
[‘n’, ‘a’, ‘x’, ‘v’, ‘d’, ‘d’, ‘ad’, ‘x’, ‘c’, ‘nr’, ‘n’, ‘a’]
↓↓↓【句法分析】
[ 发货 慢 ] [ 包装 不 严实 ] [ 宝贝 质量 不错 ]
↓↓↓【计分】
-1分、-1分、1分
观点 | 得分 | 实体抽取 | 实体分类1 | 实体分类2 |
---|---|---|---|---|
发货慢 | -1 | 发货 | 物流 | 物流速度 |
包装不严实 | -1 | 包装 | 物流 | 物流包装 |
质量不错 | 1 | 宝贝 | 商品 | 商品质量 |
2、词法分析
- 分词、词性标注
- 沿用jieba的贝叶斯网络、HMM和Viterbi算法
- e.g.
-
原句:工信处女干事每月经过科室都要亲口交代工作
↓↓↓
分词列表:[‘工信处’, ‘女干事’, ‘每月’, ‘经过’, ‘科室’, ‘都’, ‘要’, ‘亲口’, ‘交代’, ‘工作’]
词性列表:[‘n’, ‘n’, ‘r’, ‘p’, ‘n’, ‘d’, ‘v’, ‘n’, ‘n’, ‘vn’]
3、句法分析
- 方法1:纯规则
-
思想:简化样本、减法规则处理;
优点:开发难度低;运算速度快;
缺点:难以处理长句、双重否定句等;后期准确率难以提升; - 方法2:依存句法分析
-
开源或免费的工具有:HanLP、nltk、百度AI等
优点:主流;精准;
缺点:开发难度大; - 方法3:贝叶斯网络
-
模型理解:有向无环图+条件概率
特点:准确率优于纯规则方法;开发难度适中
贝叶斯网络示例
【音质 舒服 不 刺耳】–>【【音质 舒服】【不 刺耳】】
【名形副形】–>【【名形】【副形】】
# 名词、副词、形容词
dt = {'名副形': 3, '副形名': 2, '名形副': 1, '名形': 4, '形名': 2, '副形': 4, '形副': 1}
total = sum(dt.values()) # 总频数
sequence = '名形副形' # 词性序列
length = len(sequence)
# 有向无环图
DAG = dict()
for head in range(length):
DAG.update({head: [head]})
for middle in range(head + 2, length + 1):
word = sequence[head: middle]
if word in dt:
DAG[head].append(middle - 1)
# 最大概率路线
route = {length: (1, 1)}
for idx in range(length - 1, -1, -1):
route[idx] = max(
((dt.get(sequence[idx:x + 1]) or 1) / total * route[x + 1][0], x)
for x in DAG[idx])
# 逆向匹配
x = 0
while x < length:
y = route[x][1] + 1
l_word = sequence[x:y]
print(l_word)
x = y
4、语义分析
原句 | 观点 | 得分 |
---|---|---|
那噪音非常大 | 噪音(-1)非常(2)大(1) | -2 |
价格不算太高啦 | 价格(-1)不算(-0.5)太(2)高(1) | 1 |