通过tfidf 求文本的关键字
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
content = ["我, 爱, 中国", "我, 爱, 共产党", "我,爱,家乡"]
model = TfidfVectorizer(token_pattern='\w+')
# 使用 token_pattern 这样可以去到单个字, 默认是直接忽略单个字的
result = model.fit_transform(content)
# 默认返回的是稀疏矩阵, 只记录有数据的元素和索引
print(type(result))
print(result)
# 转换成普通矩阵
result.toarray() # 或者 result.A
# 这个属性的顺序是各个字在文本中出现的顺序, 以及每个词在特征中的索引
model.vocabulary_
# 这个顺序是 对应 特征 的顺序
features = model.get_feature_names()
features
for i in np.argmax(resultarray, axis=1):
print(features[i])
这里也列出使用jieba求关键字
但是有几点说明: 我指定想要求两个关键字, 但是并不给出了两个关键字, 只给出了一个或是没有给出
# 我们使用结巴选择关键词,
# 但是这种方法提取的关键字是根据结巴内部进行选择重要性的,
# 在输入一条文本的时候并不知道其他文本的存在,
# 所以不肯能算出idf的实际值
from jieba.analyse import extract_tags
for text in content:
keyWord = extract_tags(text, topK=2, allowPOS=['ns', 'n', 'vn', 'v','nr'])
print(keyWord)