Jieba和SnowNLP是两个常用的中文自然语言处理(NLP)模块,广泛应用于文本预处理和分析。Jieba以其高效的中文分词功能著称,提供了三种分词模式:精确模式、全模式和搜索引擎模式,适用于不同的应用场景。它还支持自定义词典,以提高分词的准确性和灵活性。此外,Jieba还包含词性标注、关键词提取和TF-IDF计算等功能。
SnowNLP则是一个功能全面的中文NLP库,专注于中文文本的情感分析、文本分类和拼音转换等任务。它易于使用,能够处理繁体和简体中文,并提供了丰富的API接口。SnowNLP的情感分析功能特别强大,可以对文本进行情感倾向的预测,适用于微博、评论等社交媒体数据的分析。
函数名 | 所属模块 | 分类 | 功能 |
---|---|---|---|
jieba.cut | Jieba | 分词 | 精确模式分词 |
jieba.cut_for_search | Jieba | 分词 | 搜索引擎模式分词 |
jieba.lcut | Jieba | 分词 | 精确模式分词,返回列表 |
jieba.lcut_for_search | Jieba | 分词 | 搜索引擎模式分词,返回列表 |
jieba.add_word | Jieba | 词典 | 向自定义词典中添加新词 |
jieba.del_word | Jieba | 词典 | 从自定义词典中删除词 |
jieba.load_userdict | Jieba | 词典 | 加载自定义词典 |
jieba.analyse.extract_tags | Jieba | 关键词 | 提取关键词 |
jieba.analyse.textrank | Jieba | 关键词 | 使用TextRank算法提取关键词 |
jieba.posseg.cut | Jieba | 词性标注 | 进行词性标注 |
snownlp.SnowNLP | SnowNLP | 核心 | 初始化SnowNLP对象 |
snownlp.SnowNLP.words | SnowNLP | 分词 | 分词 |
snownlp.SnowNLP.tags | SnowNLP | 词性标注 | 词性标注 |
snownlp.SnowNLP.sentiments | SnowNLP | 情感分析 | 情感分析 |
snownlp.SnowNLP.summary | SnowNLP | 摘要 | 提取摘要 |
snownlp.SnowNLP.keywords | SnowNLP | 关键词 | 提取关键词 |
snownlp.SnowNLP.pinyin | SnowNLP | 拼音 | 转换为拼音 |
snownlp.SnowNLP.tf | SnowNLP | 统计分析 | 计算TF值 |
snownlp.SnowNLP.idf | SnowNLP | 统计分析 | 计算IDF值 |
snownlp.SnowNLP.sim | SnowNLP | 相似度 | 计算句子相似度 |
以下是Jieba和SnowNLP两个模块中常用函数的参数注释、示例和简短说明:
Jieba
jieba.cut(sentence, cut_all=False, HMM=True)
sentence
: 要分词的文本字符串。cut_all
: 是否使用全模式分词,默认为False。HMM
: 是否使用隐马尔可夫模型,默认为True。
示例:
import jieba text = "我来到北京清华大学" words = jieba.cut(text, cut_all=False) print("/".join(words))
说明:精确模式分词。
jieba.cut_for_search(sentence, HMM=True)
sentence
: 要分词的文本字符串。HMM
: 是否使用隐马尔可夫模型,默认为True。
示例:
import jieba text = "我来到北京清华大学" words = jieba.cut_for_search(text) print("/".join(words))
说明:搜索引擎模式分词。
jieba.lcut(sentence, cut_all=False, HMM=True)
sentence
: 要分词的文本字符串。cut_all
: 是否使用全模式分词,默认为False。HMM
: 是否使用隐马尔可夫模型,默认为True。
示例:
import jieba text = "我来到北京清华大学" words = jieba.lcut(text, cut_all=False) print(words)
说明:精确模式分词,返回列表。
jieba.lcut_for_search(sentence, HMM=True)
sentence
: 要分词的文本字符串。HMM
: 是否使用隐马尔可夫模型,默认为True。
示例:
import jieba text = "我来到北京清华大学" words = jieba.lcut_for_search(text) print(words)
说明:搜索引擎模式分词,返回列表。
jieba.add_word(word, freq=None, tag=None)
word
: 要添加的词。freq
: 词频,默认为None。tag
: 词性,默认为None。
示例:
import jieba jieba.add_word("清华大学") text = "我来到北京清华大学" words = jieba.cut(text) print("/".join(words))
说明:向自定义词典中添加新词。
jieba.del_word(word)
word
: 要删除的词。
示例:
import jieba jieba.del_word("清华大学") text = "我来到北京清华大学" words = jieba.cut(text) print("/".join(words))
说明:从自定义词典中删除词。
jieba.load_userdict(filepath)
filepath
: 自定义词典文件路径。
示例:
import jieba jieba.load_userdict("user_dict.txt") text = "我来到北京清华大学" words = jieba.cut(text) print("/".join(words))
说明:加载自定义词典。
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
sentence
: 要提取关键词的文本字符串。topK
: 返回关键词的数量,默认为20。withWeight
: 是否返回每个关键词的权重,默认为False。allowPOS
: 仅包括指定词性的词,默认为空元组。
示例:
import jieba.analyse text = "我来到北京清华大学" keywords = jieba.analyse.extract_tags(text, topK=5) print(keywords)
说明:提取关键词。
jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'))
sentence
: 要提取关键词的文本字符串。topK
: 返回关键词的数量,默认为20。withWeight
: 是否返回每个关键词的权重,默认为False。allowPOS
: 仅包括指定词性的词,默认为 ('ns', 'n', 'vn', 'v')。
示例:
import jieba.analyse text = "我来到北京清华大学" keywords = jieba.analyse.textrank(text, topK=5) print(keywords)
说明:使用TextRank算法提取关键词。
jieba.posseg.cut(sentence, HMM=True)
sentence
: 要进行词性标注的文本字符串。HMM
: 是否使用隐马尔可夫模型,默认为True。
示例:
import jieba.posseg as pseg text = "我来到北京清华大学" words = pseg.cut(text) for word, flag in words: print(f'{word} {flag}')
说明:进行词性标注。
SnowNLP
snownlp.SnowNLP(text)
text
: 要处理的文本字符串。
示例:
from snownlp import SnowNLP text = "我来到北京清华大学" s = SnowNLP(text) print(s.words)
说明:初始化SnowNLP对象。
snownlp.SnowNLP.words
- 无参数。
示例:
from snownlp import SnowNLP text = "我来到北京清华大学" s = SnowNLP(text) print(s.words)
说明:分词。
snownlp.SnowNLP.tags
- 无参数。
示例:
from snownlp import SnowNLP text = "我来到北京清华大学" s = SnowNLP(text) print(s.tags)
说明:词性标注。
snownlp.SnowNLP.sentiments
- 无参数。
示例:
from snownlp import SnowNLP text = "这个产品非常好" s = SnowNLP(text) print(s.sentiments)
说明:情感分析。
snownlp.SnowNLP.summary
n
: 提取摘要的句子数,默认为3。
示例:
from snownlp import SnowNLP text = "我来到北京清华大学。清华大学是中国著名的高等学府。" s = SnowNLP(text) print(s.summary(1))
说明:提取摘要。
snownlp.SnowNLP.keywords
n
: 提取关键词的数量,默认为5。
示例:
from snownlp import SnowNLP text = "我来到北京清华大学。清华大学是中国著名的高等学府。" s = SnowNLP(text) print(s.keywords(3))
说明:提取关键词。
snownlp.SnowNLP.pinyin
- 无参数。
示例:
from snownlp import SnowNLP text = "清华大学" s = SnowNLP(text) print(s.pinyin)
说明:转换为拼音。
snownlp.SnowNLP.tf
- 无参数。
示例:
from snownlp import SnowNLP text = "清华大学 清华大学" s = SnowNLP(text) print(s.tf)
说明:计算TF值。
snownlp.SnowNLP.idf
- 无参数。
示例:
from snownlp import SnowNLP text = "清华大学 清华大学" s = SnowNLP(text) print(s.idf)
说明:计算IDF值。
snownlp.SnowNLP.sim
sentence
: 要比较的句子。
示例:
from snownlp import SnowNLP text1 = "我来到北京清华大学" text2 = "我去北京大学" s1 = SnowNLP(text1) s2 = SnowNLP(text2) print(s1.sim(text2))
说明:计算句子相似度。