"""
关键词抽取: 是指从文本中确定一些能够描述文档含义的关键术语的过程
关键短语抽取: 关键词抽取结束后, 可以得到N个关键词, 在原始文本中相邻的关键词便构成了关键短语
关键句抽取: 句子抽取任务主要就是为了解决自动文本摘要任务, 将每一个sentence作为一个顶点, 根据两个句子之间的内容重复程度来计算他们之间的相似度
"""
import jieba.analyse
from textrank4zh import TextRank4Keyword, TextRank4Sentence
# 提取文本中的关键词
def extract_keywords(text):
# 设置允许的词性标签,主要是名词
noun_tags = ['n', 'nr', 'nrfg', 'ns', 'nt', 'nz']
# 初始化关键词提取器,指定允许的词性
keyword_extractor = TextRank4Keyword(allow_speech_tags=noun_tags)
# 分析文本,生成关键词图
keyword_extractor.analyze(
text, # 输入文本
window=2, # 滑动窗口大小
lower=True, # 将文本转换为小写
vertex_source='all_filters', # 顶点来源,使用所有过滤条件
edge_source='no_stop_words', # 边的来源,不使用停用词
pagerank_config={'alpha': 0.85} # PageRank 算法的阻尼系数
)
# 提取前6个关键词,关键词最小长度为2
extracted_keywords = keyword_extractor.get_keywords(num=6, word_min_len=2)
# 输出提取的关键词
print('关键词:', extracted_keywords)
# 提取文本中的关键短语
def extract_keyphrases(text):
# 初始化关键短语提取器
phrase_extractor = TextRank4Keyword()
# 分析文本,生成关键短语图
phrase_extractor.analyze(
text, # 输入文本
window=2, # 滑动窗口大小
lower=True, # 将文本转换为小写
vertex_source='all_filters', # 顶点来源,使用所有过滤条件
edge_source='no_stop_words', # 边的来源,不使用停用词
pagerank_config={'alpha': 0.85} # PageRank 算法的阻尼系数
)
# 提取前6个关键短语,每个短语至少包含2个关键词
extracted_keyphrases = phrase_extractor.get_keyphrases(keywords_num=6, min_occur_num=1)
# 输出提取的关键短语
print('关键短语:', extracted_keyphrases)
# 提取文本中的关键句
def extract_keysentences(text):
# 初始化关键句提取器
sentence_extractor = TextRank4Sentence()
# 分析文本,生成关键句图
sentence_extractor.analyze(
text, # 输入文本
lower=True, # 将文本转换为小写
source='no_stop_words', # 句子来源,不使用停用词
pagerank_config={'alpha': 0.85} # PageRank 算法的阻尼系数
)
# 提取前3个关键句,句子最小长度为6
extracted_keysentences = sentence_extractor.get_key_sentences(num=3, sentence_min_len=6)
# 输出提取的关键句
print('关键句:', extracted_keysentences)
# 使用Jieba库提取关键词
def extract_keywords_jieba(text):
# 使用jieba的textrank算法提取前6个关键词
jieba_keywords = jieba.analyse.textrank(text, topK=6)
# 输出Jieba提取的关键词
print('Jieba提取的关键词:', jieba_keywords)
# 主程序入口
if __name__ == '__main__':
# 示例文本,包含自然语言处理相关内容
sample_text = "自然语言处理中的TextRank算法是非常重要的技术。通过应用它,我们可以从给定的文本中提取关键短语、关键词和重要句子。" \
"这在文本摘要、情感分析等应用中非常有用。有了像jieba和textrank4zh这样的Python库,实现这一算法变得相当简单。"
# 调用函数提取关键词、关键短语、关键句以及使用Jieba提取关键词
extract_keywords(sample_text)
extract_keyphrases(sample_text)
extract_keysentences(sample_text)
extract_keywords_jieba(sample_text)
关键词: [{'word': '短语', 'weight': 0.3742185906449433}, {'word': '关键', 'weight': 0.1975060892929125}, {'word': '关键词', 'weight': 0.1975060892929125}, {'word': '算法', 'weight': 0.038461538461538575}, {'word': '技术', 'weight': 0.038461538461538575}, {'word': '文本', 'weight': 0.038461538461538575}]
关键短语: ['关键短语']
关键句: [{'index': 1, 'sentence': '通过应用它,我们可以从给定的文本中提取关键短语、关键词和重要句子', 'weight': 0.2641462213783074}, {'index': 0, 'sentence': '自然语言处理中的TextRank算法是非常重要的技术', 'weight': 0.25745608240303836}, {'index': 2, 'sentence': '这在文本摘要、情感分析等应用中非常有用', 'weight': 0.25049576615361446}]
Jieba提取的关键词: ['文本', '算法', '应用', '情感', '分析', '提取']