打卡NLP,常用分词算法实战

1、首先接jieba分词,这个词库非常好用,操作简单,运行速度快
直接上代码

import jieba
import re
# import jieba.posseg as pseg
# 基于TextRank算法的关键词提取
# from jieba import analyse
txt="在新建、改建或扩建的常规水电站中,加装抽水蓄能机组建设混合式抽水蓄能电站,还应与增装常规水电机组进行技术经济比较,论证建设混合式抽水蓄能电站的必要性和合理性"
ls = jieba.cut(txt,cut_all=False)    # 中文分词
word_list=[]
for seg in ls:
     word_list.append(seg)
print('启用停用词过滤时的分词结果:\n', '/'.join(word_list))

分词结果:

启用停用词过滤时的分词结果:
 在/新建//改建//扩建//常规/水电站///加装/抽水/蓄能/机组/建设/混合式/抽水/蓄能/电站/////增装/常规/水电/机组/进行/技术/经济/比较//论证/建设/混合式/抽水/蓄能/电站//必要性//合理性

2、Snownlp分词,主要用于情感分词,不能加入自建词库
代码:

# -*- coding: utf-8 -*-
from snownlp import SnowNLP
from snownlp import sentiment
s = SnowNLP(u"在新建、改建或扩建的常规水电站中,加装抽水蓄能机组建设混合式抽水蓄能电站,还应与增装常规水电机组进行技术经济比较,论证建设混合式抽水蓄能电站的必要性和合理性")

print("1、中文分词:\n", s.words)
""" 
中文分词:
这 本书 质量 真 不 太 好 !
 """

print("2、词性标注:\n", s.tags)

print("3、情感倾向分数:\n", s.sentiments)
"""
情感分数:
0.420002029202
"""

print("4、转换拼音:\n", s.pinyin)

print("5、输出前4个关键词:\n", s.keywords(4))

print("6、输出关键(中心)句:\n", s.summary(1))

print("7.1、输出tf:\n", s.tf)

print("7.2、输出idf:\n", s.idf)

n = SnowNLP('「繁體字」「繁體中文」的叫法在臺灣亦很常見。')
print("8、繁简体转换:\n", n.han)
"""
繁简体转换:
「繁体字」「繁体中文」的叫法在台湾亦很常见。
"""

代码输出结果;

1、中文分词:
 ['在', '新建', '、', '改建', '或', '扩建', '的', '常规', '水电站', '中', ',', '加装', '抽', '水蓄', '能', '机组', '建设', '混合式', '抽', '水蓄', '能电站', ',', '还', '应', '与', '增装', '常规', '水电机组', '进行', '技术', '经济', '比较', ',', '论证', '建设', '混合式', '抽', '水蓄', '能电站', '的', '必要性', '和', '合理性']
2、词性标注:
 <zip object at 0x0000018C7BC11048>
3、情感倾向分数:
 0.03532990571701
4、转换拼音:
 ['zai', 'xin', 'jian', '、', 'gai', 'jian', 'huo', 'kuo', 'jian', 'de', 'chang', 'gui', 'shui', 'dian', 'zhan', 'zhong', ',', 'jia', 'zhuang', 'chou', 'shui', 'xu', 'neng', 'ji', 'zu', 'jian', 'she', 'hun', 'he', 'shi', 'chou', 'shui', 'xu', 'neng', 'dian', 'zhan', ',', 'huan', 'ying', '与', 'zeng', 'zhuang', 'chang', 'gui', 'shui', 'dian', 'ji', 'zu', 'jin', 'xing', 'ji', 'shu', 'jing', 'ji', 'bi', 'jiao', ',', 'lun', 'zheng', 'jian', 'she', 'hun', 'he', 'shi', 'chou', 'shui', 'xu', 'neng', 'dian', 'zhan', 'de', 'bi', 'yao', 'xing', 'huo', 'he', 'li', 'xing']
5、输出前4个关键词:
 ['常规', '抽', '水蓄', '建设']
6、输出关键(中心)句:
 ['在新建、改建或扩建的常规水电站中']
7.1、输出tf:
 [{'在': 1}, {'新': 1}, {'建': 1}, {'、': 1}, {'改': 1}, {'建': 1}, {'或': 1}, {'扩': 1}, {'建': 1}, {'的': 1}, {'常': 1}, {'规': 1}, {'水': 1}, {'电': 1}, {'站': 1}, {'中': 1}, {',': 1}, {'加': 1}, {'装': 1}, {'抽': 1}, {'水': 1}, {'蓄': 1}, {'能': 1}, {'机': 1}, {'组': 1}, {'建': 1}, {'设': 1}, {'混': 1}, {'合': 1}, {'式': 1}, {'抽': 1}, {'水': 1}, {'蓄': 1}, {'能': 1}, {'电': 1}, {'站': 1}, {',': 1}, {'还': 1}, {'应': 1}, {'与': 1}, {'增': 1}, {'装': 1}, {'常': 1}, {'规': 1}, {'水': 1}, {'电': 1}, {'机': 1}, {'组': 1}, {'进': 1}, {'行': 1}, {'技': 1}, {'术': 1}, {'经': 1}, {'济': 1}, {'比': 1}, {'较': 1}, {',': 1}, {'论': 1}, {'证': 1}, {'建': 1}, {'设': 1}, {'混': 1}, {'合': 1}, {'式': 1}, {'抽': 1}, {'水': 1}, {'蓄': 1}, {'能': 1}, {'电': 1}, {'站': 1}, {'的': 1}, {'必': 1}, {'要': 1}, {'性': 1}, {'和': 1}, {'合': 1}, {'理': 1}, {'性': 1}]
7.2、输出idf:
 {'在': 3.9448128282511368, '新': 3.9448128282511368, '建': 2.5925373139803654, '、': 3.9448128282511368, '改': 3.9448128282511368, '或': 3.9448128282511368, '扩': 3.9448128282511368, '的': 3.421000008958335, '常': 3.421000008958335, '规': 3.421000008958335, '水': 2.5925373139803654, '电': 2.8067217286092396, '站': 3.071369687759611, '中': 3.9448128282511368, ',': 3.071369687759611, '加': 3.9448128282511368, '装': 3.421000008958335, '抽': 3.071369687759611, '蓄': 3.071369687759611, '能': 3.071369687759611, '机': 3.421000008958335, '组': 3.421000008958335, '设': 3.421000008958335, '混': 3.421000008958335, '合': 3.071369687759611, '式': 3.421000008958335, '还': 3.9448128282511368, '应': 3.9448128282511368, '与': 3.9448128282511368, '增': 3.9448128282511368, '进': 3.9448128282511368, '行': 3.9448128282511368, '技': 3.9448128282511368, '术': 3.9448128282511368, '经': 3.9448128282511368, '济': 3.9448128282511368, '比': 3.9448128282511368, '较': 3.9448128282511368, '论': 3.9448128282511368, '证': 3.9448128282511368, '必': 3.9448128282511368, '要': 3.9448128282511368, '性': 3.421000008958335, '和': 3.9448128282511368, '理': 3.9448128282511368}
8、繁简体转换:
 「繁体字」「繁体中文」的叫法在台湾亦很常见。

3、 THULAC
代码:

# 代码示例1
import thulac
# thu1 = thulac.thulac()  #默认模式
thu1 = thulac.thulac(user_dict='H:\知识图谱代码及相关文件\\test3.txt',seg_only=True)
text = thu1.cut("在新建、改建或扩建的常规水电站中,加装抽水蓄能机组建设混合式抽水蓄能电站,还应与增装常规水电机组进行技术经济比较,论证建设混合式抽水蓄能电站的必要性和合理性", text=True)  #进行一句话分词
print(text)

分词结果:

Model loaded succeed
在 新建 、 改建 或 扩建 的 常规 水电站 中 , 加装 抽水 蓄 能 机组 建设 混合式抽水蓄能电站 , 还 应 与 增装 常规 水电机组 进行 技术经济比较 , 论证 建设 混合式抽水蓄能电站 的 必要性 和 合理性

4、LTP哈工大分词,目前加入自建词库存在问题。
代码:

# 加载自定义词库
with open('test3.txt', 'r', encoding='utf-8') as f:
    custom_dict = [line.strip() for line in f]
import os
from pyltp import Segmentor
# print(custom_dict)
import subprocess
# 加载分词器
LTP_DIR = "./ltp_data_v3.4.0"
segmentor = Segmentor(model_path=os.path.join(LTP_DIR, "cws.model"),lexicon_path='test3.txt')
# segmentor.load(model_path=os.path.join(LTP_DIR, "cws.model",'test3.txt'))
text = "在新建、改建或扩建的常规水电站中,加装抽水蓄能机组建设混合式抽水蓄能电站,还应与增装常规水电机组进行技术经济比较,论证建设混合式抽水蓄能电站的必要性和合理性" #进行一句话分词

words = list(segmentor.segment(text))


# 输出分词结果
print(words)

结果:

['在', '新建', '、', '改建', '或', '扩建', '的', '常规', '水电站', '中', ',', '加装', '抽水', '蓄', '能', '机组', '建设', '混合式', '抽水', '蓄', '能', '电站', ',', '还', '应', '与', '增装', '常规', '水电', '机组', '进行', '技术', '经济', '比较', ',', '论证', '建设', '混合式', '抽水', '蓄', '能', '电站', '的', '必要性', '和', '合理性']

5、Hanlp
代码

from pyhanlp import *
# 加载自定义词库
with open('test3.txt', 'r', encoding='utf-8') as f:
    custom_dict = [line.strip() for line in f]

# 为hanlp加载自定义词表
for keys in custom_dict:
    CustomDictionary.add( keys)
print(CustomDictionary)
# 加载分词器
Segment = JClass('com.hankcs.hanlp.seg.Segment')
HanLP = JClass('com.hankcs.hanlp.HanLP')
segment = HanLP.newSegment()

# 分词
text = "在新建、改建或扩建的常规水电站中,加装抽水蓄能机组建设混合式抽水蓄能电站,还应与增装常规水电机组进行技术经济比较,论证建设混合式抽水蓄能电站的必要性和合理性"
result = segment.seg(text)
print([i.word for i in result])
# 输出分词结果
# for term in result:
#     print(term.word)

结果:

['在', '新建', '、', '改建', '或', '扩建', '的', '常规', '水电站', '中', ',', '加装', '抽水', '蓄能', '机组', '建设', '混合式抽水蓄能电站', ',', '还', '应', '与', '增', '装', '常规', '水', '电机', '组', '进行', '技术经济比较', ',', '论证', '建设', '混合式抽水蓄能电站', '的', '必要性', '和', '合理性']

整理的比较匆忙,后续会将各个分词的优缺点进行描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《Python自然语言处理实战核心技术与算法》是一本深入介绍自然语言处理领域核心技术和算法的图书。书中首先从自然语言处理的基本概念和原理入手,介绍了自然语言处理的基本任务和应用场景。随后详细介绍了使用Python编程语言进行自然语言处理的相关工具和库,包括NLTK、spaCy和gensim等。读者将学习如何使用这些工具处理文本数据,进行分词、词性标注、命名实体识别等常见任务。 在核心技术方面,书中深入讲解了词向量表示、文本分类、情感分析、文本生成等自然语言处理领域的重要概念和方法。读者将学习到如何用Python实现这些技术,并将其运用到实际的文本数据中。此外,书中还介绍了一些经典的自然语言处理算法,例如HMM和CRF,在讲解这些算法的同时,也教会了读者如何使用Python来实现它们。 除此之外,书中还结合了一些实际的自然语言处理案例,通过这些案例的讲解,读者可以更好地理解自然语言处理的实际应用以及如何运用Python来解决具体的问题。最后,书中还介绍了一些自然语言处理领域的前沿技术和研究方向,为读者提供了未来深入学习的方向。 总之,《Python自然语言处理实战核心技术与算法》以通俗易懂的语言系统地介绍了自然语言处理的基础知识、核心技术和算法,适合有一定Python编程基础的读者阅读。通过学习本书,读者能够全面了解自然语言处理的前沿技术,掌握用Python来解决实际问题的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值