当前位置:   article > 正文

gensim进行LSI LSA LDA主题模型,TFIDF关键词提取,jieba TextRank关键词提取代码实现示例_lda主题提取词袋模型和tfidf

lda主题提取词袋模型和tfidf
  1. import gensim
  2. import math
  3. import jieba
  4. import jieba.posseg as posseg
  5. from jieba import analyse
  6. from gensim import corpora, models
  7. import functools
  8. import numpy as np
  9. # 停用词表加载方法
  10. # 停用词表存储路径,每一行为一个词,按行读取进行加载
  11. # 进行编码转换确保匹配准确率
  12. def get_stopword_list():
  13. stopword_path = '.\\stopword.txt'
  14. stopword_list = [sw.replace('\n', '') for sw in open(stopword_path, encoding='utf8').readlines()]
  15. return stopword_list
  16. # 分词方法,调用结巴接口
  17. def seg_to_list(sentence, pos=False):
  18. if not pos:
  19. # 不进行词性标注分词
  20. seg_list = jieba.cut(sentence)
  21. else:
  22. # 进行词性标注分词
  23. seg_list = posseg.cut(sentence)
  24. return seg_list
  25. # 去除干扰词
  26. def word_filter(seg_list, pos=False):
  27. stopword_list = get_stopword_list()
  28. filter_list = []
  29. # 根据POS参数选择是否词性过滤
  30. # 不进行词性过滤,则将词性都标记为n,表示全部保留
  31. for seg in seg_list:
  32. if not pos:
  33. word = seg
  34. flag = 'n'
  35. else:
  36. word = seg.word
  37. flag = seg.flag
  38. if not flag.startswith('n'):
  39. continue
  40. # 过滤停用词表中的词,以及长度为<2的词
  41. if word not in stopword_list and len(word) > 1:
  42. filter_list.append(word)
  43. return filter_list
  44. # 数据加载,pos为是否词性标注的参数,corpus_path为数据集路径
  45. def load_data(pos=False, corpus_path='.\\corpus.txt'):
  46. # 调用上面方式对数据集进行处理,处理后的每条数据仅保留非干扰词
  47. doc_list = []
  48. for line in open(corpus_path, 'r', encoding='utf8'):
  49. content = line.strip()
  50. seg_list = seg_to_list(content, pos)
  51. filter_list = word_filter(seg_list, pos)
  52. doc_list.append(filter_list)
  53. return doc_list
  54. # idf值统计方法
  55. def train_idf(doc_list):
  56. idf_dic = {}
  57. # 总文档数
  58. tt_count = len(doc_list)
  59. # 每个词出现的文档数 集合是去重的
  60. for doc in doc_list:
  61. for word in set(doc): # 这是一个集合 这个很关键 集合是去重的
  62. idf_dic[word] = idf_dic.get(word, 0.0)+1.0
  63. # 按公式转换为idf值,分母加1进行平滑处理
  64. for k, v in idf_dic.items():
  65. idf_dic[k] = math.log(tt_count/(v+1.0))
  66. # 对于没有在字典中的词,默认其仅在一个文档出现,得到默认idf值
  67. default_idf = math.log(tt_count/1.0)
  68. return idf_dic, default_idf
  69. # 排序函数,用于topK关键词的按值排序
  70. def cmp(e1,
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/350742
推荐阅读
相关标签
  

闽ICP备14008679号