当前位置:   article > 正文

在anaconda中使用NLTK,【自然语言】jieba进行分词并统计频率最高的50个高频词语_anaconda怎么对csv文件分词后统计词频

anaconda怎么对csv文件分词后统计词频

一、任务目标:

在anaconda中使用NLTK
python代码写通过下载的《天龙八部》语料构建武侠小说语料库,实现如下操作:

1.读取本地语料。

2. 查询词频。
3.查看《天龙八部》部分文本(4000~4010个词汇)。

4.统计频率最高的50个高频词语。

5. 查询词频在指定区间内词频在100~200的词汇的次数量。

6.使用jieba进行分词。

7. 查看指定单词“包不同”,“鸠摩智”的上下文(上下文长度为20个单词,显示5行)。

8.分别绘制“包不同”,“鸠摩智”词汇分布图。

jieba安装:https://blog.csdn.net/zywmac/article/details/137245898?spm=1001.2014.3001.5501

NLTK安装https://blog.csdn.net/zywmac/article/details/136872046?spm=1001.2014.3001.5501 

二、代码部分

  1. import jieba
  2. import matplotlib.pyplot as plt
  3. from collections import Counter
  4. # 1. 首先读取本地语料
  5. #encoding='latin1'或者gbk(若UTF-8报错,可替换)
  6. file_path = "/Users/zhengyawen/Downloads/zh/金庸-天龙八部.txt"
  7. with open(file_path, "r", encoding="gbk") as f:
  8. text = f.read()
  9. # 2. 去除文章中的标点符号
  10. text = ''.join(e for e in text if e.isalnum() or e.isspace())
  11. # 3. 查询词频
  12. word_freq = Counter(word for word in jieba.cut(text) if word != '\u3000' and word != '\n')
  13. # 4. 查看《天龙八部》部分文本(4000~4010个词汇)
  14. partial_text = "".join(word for word in jieba.cut(text))[4000:4010]
  15. # 5. 统计频率最高的50个高频词语
  16. top_50_words = word_freq.most_common(50)
  17. # 6. 查询词频在指定区间内词频在100~200的词汇的次数量
  18. freq_100_200 = sum(1 for freq in word_freq.values() if 100 <= freq <= 200)
  19. # 7. 使用jieba进行分词
  20. cut_text = [word for word in jieba.lcut(text) if word != '\u3000' and word != '\n']
  21. # 8. 查看指定单词“包不同”,“鸠摩智”的上下文(上下文长度为20个单词,显示5行)
  22. #遍历文本中的每个单词,并检查是否与指定的单词匹配。
  23. #如果匹配,则根据 window_size 获取该单词的上下文范围,并将上下文添加到 contexts列表中。
  24. def find_context(word, text, window_size=20, lines=5):
  25. contexts = []
  26. for i, token in enumerate(text):
  27. if token == word:
  28. start = max(0, i - window_size)
  29. end = min(len(text), i + window_size + 1)
  30. context = text[start:end]
  31. contexts.append(context)
  32. if len(contexts) == lines:
  33. break
  34. return contexts
  35. word1_contexts = find_context("包不同", cut_text)
  36. word2_contexts = find_context("鸠摩智", cut_text)
  37. # 9. 分别绘制“包不同”,“鸠摩智”词汇分布图
  38. def plot_word_distribution(word, text):
  39. freq = [i + 1 for i, token in enumerate(text) if token == word]
  40. plt.hist(freq, bins=50, color='skyblue', edgecolor='black')
  41. plt.title(f"指定单词-----'{word}'")
  42. plt.xlabel("文章中位置分布")
  43. plt.ylabel("出现频率")
  44. plt.show()
  45. plt.rcParams['font.sans-serif'] = ['Songti SC']#字体设置,Mac可用
  46. plot_word_distribution("包不同", cut_text)
  47. plot_word_distribution("鸠摩智", cut_text)
  48. # 10. 打印结果
  49. print("《天龙八部》部分文本(4000~4010个词汇):", partial_text)
  50. print("\n频率最高的50个高频词语:", top_50_words)
  51. print("\n词频在100~200的词汇的次数量:", freq_100_200)
  52. print("\n'包不同'的上下文:")
  53. for context in word1_contexts:
  54. print(" ".join(context))
  55. print("\n'鸠摩智'的上下文:")
  56. for context in word2_contexts:
  57. print(" ".join(context))

三、运行结果

                      


自然语言学科内容,有帮助的话可以cv。 

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

闽ICP备14008679号