lda分析前的文本预处理卡住了(上个帖子代码复制漏了重新发)
import osimport pandas as pd
import re
import jieba
import jieba.posseg as psg #导入lda分析需要的一系列包
output_path = 'D:/文本挖掘'#把结果输出到该路径下
file_path = 'C:/Users/m/Desktop' #数据所在路径
os.chdir(file_path)
data=pd.read_excel("数据2.xlsx")#content type
os.chdir(output_path)
dic_file = "D:/自然语言处理/dict.txt" #字典路径
stop_file = "D:/自然语言处理/stopwords.txt" #停用词路径
def chinese_word_cut(mytext): #对数据进行中文分词
jieba.load_userdict(dic_file)
jieba.initialize()
try:
stopword_list = open(stop_file,encoding ='utf-8')#防止出现乱码错误,故指定编码类型为'utf-8'
except:
stopword_list = []
print("error in stop_file")
stop_list = []
flag_list = ['n','nz','vn']
for line in stopword_list:
line = re.sub(u'\n|\\r', '', line)
stop_list.append(line)
word_list = []
#jieba分词
seg_list = psg.cut(mytext)
for seg_word in seg_list:
word = re.sub(u'[^\u4e00-\u9fa5]','',seg_word.word)
word = seg_word.word#如果想要分析英语文本,注释这行代码,启动下行代码
find = 0
for stop_word in stop_list:
if stop_word == word or len(word)<2: #this word is stopword
find = 1
break
if find == 0 and seg_word.flag in flag_list:
word_list.append(word)
return (" ").join(word_list)
data["content_cutted"] = data.content.apply(chinese_word_cut)
#使用apply函数不断调用以上函数批量处理全部文本(正文)信息
data.content_cutted.head()
#查看文本是否已被正确分词 看起来你的代码在进行中文分词时卡住了,我看到可能有几个地方出了问题。
首先,你没有把要分词的文本传递给`chinese_word_cut`函数。你需要在调用函数的时候,传递一个参数,例如:
python
text = "这是要进行分词的文本"
chinese_word_cut(text)
其次,你需要确保你的字典文件`dict.txt`和停用词文件`stopwords.txt`存在,并且路径正确。如果文件不存在或路径错误,程序会出现错误。
第三,当你打开停用词文件时,你使用了`open(stop_file,encoding ='utf-8')`,但是你没有提供`except`后面的代码。你需要编写处理打开文件失败的错误处理代码。
最后,你创建了一些空列表,但是没有给它们赋值。你需要在循环中将数据添加到这些列表中:
python
stop_list = []
flag_list = []
word_list = []
# 在循环中添加数据到列表
for seg_word in seg_list:
word = re.sub(u'','',seg_word.word)
word = seg_word.word
find = 0
for stop_word in stop_list:
if stop_word == word or len(word) < 2:
find = 1
break
if not find:
word_list.append(word)
flag_list.append(seg_word.flag)
希望这些解决方案能够帮助到你!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-3-22 08:53
看起来你的代码在进行中文分词时卡住了,我看到可能有几个地方出了问题。
首先,你没有把要分词的文本传 ...
没用,运行还是卡住了 roro0209 发表于 2024-03-22 09:38
没用,运行还是卡住了
很抱歉你还是遇到了问题。如果你的代码还是卡住了,可能有几个原因:
1. 数据量过大:如果你的文本数据非常大,可能会导致分词过程运行时间很长甚至卡死程序。你可以尝试使用一个小一些的数据集来测试代码是否正常工作。
2. 字典和停用词文件的格式问题:请确保`dict.txt`和`stopwords.txt`文件的格式正确。尤其要注意文件编码是否和代码中指定的一致(比如都是UTF-8)。
3. Jieba分词库版本问题:你可以尝试更新Jieba分词库的版本。可以使用`pip install -U jieba`命令来更新分词库。
4. 内存不足:如果你的计算机内存较小,处理大量文本时可能出现内存不足的情况。你可以尝试分批处理文本,而不是一次性加载所有文本数据。
如果以上方法都不起作用,我建议你在代码中添加一些打印语句来进行调试,找出代码卡住的具体位置。例如,在`chinese_word_cut`函数中添加一些打印语句,输出每个步骤的结果,以及卡住的位置。
希望这些提示能帮助你解决问题!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]