本文介绍了一种基于Python的中文文本分析方法,用于从年报文件中提取含有关键词的语句。方法使用jieba分词库进行中文分词,通过自定义词典提高分词准确性。程序首先读取并预处理文本(统一标点符号、去除换行符),然后按句分割文本并进行分词处理,筛选出包含关键词的语句,最后将结果(股票代码、年份、关键词、语句长度及内容)保存至Excel。该方法适用于批量处理上市公司文本数据,为后续分析提供结构化数据支持。
python
import os
import pandas as pd
import jieba
import jieba.analyse
item=0 #保存到excel上的行号
fileList=os.listdir('finaltxt')#已提取完毕的txt年报文件目录
fileList.sort()#对年报按文件名进行排序
df=pd.DataFrame(columns=['code','year','sign','keyword','length','sentences'],index=range(1,50000))#预先设置列名,包括股票代码、年报年份、标记、提取出该句子所依据的关键词、文本字符长度、句子,创建50000行的空表,行数可自行估计设定
Dict=['','','']#自行录入关键词词典,注意是英文符号
for i in Dict:
jieba.add_word(i)# 向jieba内加入这些词语,防止被拆分
for index,i in enumerate(fileList):
name=i[:-4].split('_')#根据txt文件名称进行切分,例如文件名为873833_2023-12-31.txt,name[0]为873833,name[1]为2023-12-31
with open('finaltxt\\'+i,'r',encoding='utf-8') as f:
text=f.read()
text=text.replace('\n','')#删除换行符
text=text.replace(';','。')#将分号统一换成句号
textList=text.split('。') #按句号分割
#遍历每一句话,进行分词和语句提取
for i in textList:
words=jieba.lcut(i)
for word in words:
if word in Dict:#如果识别到有分词结果在关键词词典里,就录入信息
#向df里录入信息
df['code'][item]=name[0]
df['year'][item]=name[1][:4]
df['keyword'][item]=word
df['length'][item]=len(i)
df['sentences'][item]=i
item+=1
break
else:
continue
f.close()
print(str(index)+'完成')
df.to_excel('result.xlsx')