1. 导入必要的库
import pandas as pd
import jieba.posseg as pseg
from collections import Counter
import os
pandas
:用于数据处理和分析,特别是处理表格数据。jieba.posseg
:jieba
是一个中文分词库,posseg
模块用于分词并同时获取词性标注。collections.Counter
:用于统计元素出现的次数,是一个非常方便的计数器工具。os
:用于与操作系统交互,这里虽然导入了这个库,但实际代码中并未使用它。
2. 读取文本文件内容
text = open("gpt4_system2_80%.txt", encoding="utf-8").read()
- 这行代码读取一个名为
gpt4_system2_80%.txt
的文本文件,并将其内容全部读取为一个字符串text
。 encoding="utf-8"
指定了读取文件时使用 UTF-8 编码,这在处理中文文本时很常见。
3. 使用 jieba
进行分词和词性标注
words = pseg.cut(text)
- 使用
jieba.posseg.cut
方法对文本进行分词,同时获取每个词的词性。words
是一个生成器,生成(word, flag)
的元组,其中word
是词,flag
是词性标注。
4. 根据词的长度和词性提取词汇
report_words = []
for word, flag in words:
if len(word) >= 2 and flag.startswith(('n', 'v', 'a')):
report_words.append((word, flag))
- 这段代码遍历所有的
(word, flag)
元素,只保留长度不小于 2 的词,并且词性以n
(名词)、v
(动词)或a
(形容词)开头的词。 - 满足条件的
(word, flag)
元素被添加到report_words
列表中。
5. 统计高频词汇
word_counts = Counter([word for word, flag in report_words])
most_common_words = word_counts.most_common(100)
- 使用
Counter
对report_words
中的词进行计数,得到一个词频的字典word_counts
。 word_counts.most_common(100)
获取出现频率最高的 100 个词。
6. 构建包含词频和词性的数据
data = []
for word, freq in most_common_words:
for w, flag in report_words:
if w == word:
data.append([word, freq, flag])
break
- 创建一个
data
列表来存储最终的数据,每一行包含词、词频和词性。 - 对于每一个在
most_common_words
中的词,遍历report_words
找到该词的词性,将其与词频一起添加到data
中。
7. 创建 DataFrame
并保存为 Excel 文件
df = pd.DataFrame(data, columns=['词语', '词频', '词性'])
df.insert(0, 'model', 'gpt4_system2_80%')
df.to_excel("gpt4_system2_80%.xlsx", index=False)
- 使用
pandas
创建一个DataFrame
,其中包含三列:词语
、词频
和词性
。 df.insert(0, 'model', 'gpt4_system2_80%')
在DataFrame
的最前面插入一列model
,其值为gpt4_system2_80%
,表示这个数据集的来源或处理模型。- 最后,将
DataFrame
保存为名为gpt4_system2_80%.xlsx
的 Excel 文件。
总结
这段代码的主要功能是从文本中提取出特定词性和长度的高频词汇,并将这些词的词频和词性信息保存到一个 Excel 文件中,便于进一步分析或使用。