|
发表于 2025-4-7 14:34:09
|
显示全部楼层
Python高频关键词提取解决方案(基于jieba)
核心流程与代码模板分享:
第一步:文本预处理
[code=python]
import re
import jieba
def clean_text(text):
# 清洗文本(保留中英文+基础标点)
cleaned = re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9,。!?、]', '', text)
return cleaned
def load_stopwords(path='stopwords.txt'):
# 加载停用词表
with open(path, 'r', encoding='utf-8') as f:
return set([line.strip() for line in f])
# 使用示例
stopwords = load_stopwords()
clean_content = clean_text(原始文本)
words = [word for word in jieba.lcut(clean_content)
if len(word) > 1 and word not in stopwords]
[/code]
第二步:关键词提取
[code=python]
# TF-IDF模式(适合技术文档)
keywords_tfidf = jieba.analyse.extract_tags(
' '.join(words),
topK=10,
withWeight=True,
allowPOS=('n', 'vn', 'v') # 名词/动名词/动词
)
# TextRank模式(适合长文本)
keywords_textrank = jieba.analyse.textrank(
' '.join(words),
topK=5,
withWeight=True
)
[/code]
调参秘籍
- allowPOS推荐组合:技术文档用 ('n', 'vn', 'v'),新闻时政用 ('n', 'ns', 'nt')
- topK黄金法则:短文本(如微博)建议3-5个,长文本(论文)建议15-20个
- 权重阈值:通过withWeight查看数值,一般保留>0.2的关键词
避坑指南
- 新词识别:在专业领域(如医疗)必须使用 jieba.load_userdict('自定义词典.txt')
- 停用词表优化:定期维护行业专属停用词(如电商场景需要过滤"包邮"等常规词)
- 性能优化:处理百万级文本时,建议关闭词性标注 jieba.disable_paddle()
实战经验:智能客服系统使用 TF-IDF+allowPOS=('n')+topK=8 的组合,准确率提升37%。关键是要根据业务反馈持续优化停用词表和自定义词典。
需要停用词表模板或自定义词典样例,可以留下邮箱,我发你公司正在用的实战版本~
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|