当前位置:   article > 正文

python机器学习8--自然语言处理(2)

python机器学习8--自然语言处理(2)

1.移除用词

        在很多情况下,有一些文章内的英文字符、标点符号分词的结果不符合自己的预期,会出现一些不想要的分词,此时就能通过以下的函数自己设定用词,并且删除。

jieba.analyse.set_stop_words("stop_words.txt")

2.自定比重分数

        因为jieba对每一个字会给出IDF分数比重,但是在很多时候,会希望把文章中特别的关键字突显出来(或者降低),可以设定IDF分数高一些(或低一些),就能将想要的字突显出来(或者降低)。

 jieba.analyse.set_idf_path("idf.txt")         #读入IDF关键字比重分数

一个demo

  1. import sys
  2. from os import path
  3. import jieba
  4. import jieba.analyse
  5. d=path.dirname(__file__)
  6. jieba.load_userdict(path.join(d,r"C:\Users\nsy\Desktop\userdict.txt.txt"))
  7. text="今天学习好烦躁,还没有效率"
  8. content =text
  9. extracted_tags=jieba.analyse.extract_tags(content,topK=10,withWeight=False)
  10. print(" ,".join(extracted_tags))
  11. jieba.analyse.set_stop_words(path.join(d, r"C:\Users\nsy\Desktop\stop_words.txt.txt"))
  12. weighted_tags=jieba.analyse.extract_tags(content,topK=10,withWeight=True,allowPOS=('ns','n','vn','v'))
  13. for item in weighted_tags:
  14. keyword,weight=item
  15. print(f"关键词:{keyword},权重:{weight}")

3.排列出最常出现的分词(次数的统计)

  1. import sys
  2. from os import path
  3. import jieba
  4. import jieba.analyse
  5. d = path.dirname(__file__)
  6. # 根据Python版本打开文件
  7. if sys.version_info > (3, 0):
  8. text = open(path.join(d, r"C:\\Users\\nsy\\Desktop\\test.txt"), 'r', encoding='utf-8').read()
  9. else:
  10. text = open(path.join(d, r"C:\\Users\\nsy\\Desktop\\test.txt"), 'r').read()
  11. text = text.replace('\n', '')
  12. # 设置停用词文件路径,注意文件名是否正确
  13. jieba.analyse.set_stop_words(r"C:\Users\nsy\Desktop\stop_words.txt.txt")
  14. # 输出分词结果
  15. print(" ".join(jieba.cut(text)))
  16. # 打印分隔线
  17. print("-" * 10)
  18. # 使用自定义词典
  19. jieba.load_userdict(path.join(d, r"C:\Users\nsy\Desktop\userdict.txt.txt"))
  20. # 初始化字典存储词频
  21. dic = {}
  22. for ele in jieba.cut(text):
  23. if ele not in dic:
  24. dic[ele] = 1
  25. else:
  26. dic[ele] += 1
  27. # 按词频排序并输出
  28. for w in sorted(dic, key=dic.get, reverse=True):
  29. print("%s %d" % (w, dic[w]))

4.通过jieba来分析和计算网站文章所探讨的主要内容

  1. import sys
  2. import jieba
  3. import jieba.analyse
  4. import urllib.request as httplib
  5. # 网络请求异常处理
  6. try:
  7. # 网络文章的网址
  8. url = "https://csdnnews.blog.csdn.net/article/details/140678511?spm=1000.2115.3001.5928"
  9. # 送出连接的需求
  10. req = httplib.Request(url)
  11. # 打开网页
  12. response = httplib.urlopen(req)
  13. # 连接网页正常(200)
  14. if response.status == 200:
  15. # 如果是 Python 3.0 以上
  16. if sys.version_info > (3, 0):
  17. # 取得网页的数据并解码
  18. contents = response.read().decode(response.headers.get_content_charset())
  19. else:
  20. # 考虑到 Python 2 不再使用,这里可以省略对应的处理逻辑
  21. raise Exception("Python 2 is not supported")
  22. except Exception as e:
  23. print("Error during HTTP request:", e)
  24. contents = ""
  25. # 去除不要的文字
  26. jieba.analyse.set_stop_words("C:\\Users\\nsy\\Desktop\\stop_words.txt.txt")
  27. # 仅捕获地名、名词、动名词、动词
  28. keywords = jieba.analyse.extract_tags(contents, topK=5, withWeight=True, allowPOS=('ns', 'n', 'vn'))
  29. # 输出关键词和相应的权重
  30. for item in keywords:
  31. print("%s=%f" % (item[0], item[1]))
  32. print("*" * 40)
  33. # 数据结构字典 key:value
  34. dic = {}
  35. # 做分词动作
  36. words = jieba.cut(contents)
  37. # 仅处理名词、动名词
  38. for word in words:
  39. if word not in dic:
  40. dic[word] = 1 # 记录为1
  41. else:
  42. dic[word] += 1 # 累加1
  43. # 由大到小排列并打印
  44. for w in sorted(dic.items(), key=lambda x: x[1], reverse=True):
  45. print("%s: %d" % w)
  46. # 异常处理应该针对具体的操作,而不是放在代码的最后

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/899886
推荐阅读
相关标签
  

闽ICP备14008679号