这段代码使用 Python 语言实现对中文文本的预处理,主要功能包括分词和去除停用词,并使用 Gensim 库进行主题模型的训练准备。以下是代码中每部分的解释:

  1. '#!/usr/bin/python # -- coding:utf-8 --',指定该脚本要使用的解释器和字符编码。

    • '#!/usr/bin/python':指定使用 Python 解释器来运行脚本。
    • '# -- coding:utf-8 --':指定脚本使用的字符编码为 UTF-8,以确保可以正确处理中文文本。
  2. 'import jieba,os,re from gensim import corpora, models, similarities',导入需要使用的库。

    • 'jieba':是一个强大的中文分词库。
    • 'os':提供操作系统相关的操作函数。
    • 're':提供正则表达式匹配功能。
    • 'gensim':一个用于主题模型、词嵌入等自然语言处理任务的库。
    • 'corpora, models, similarities':从 gensim 库中导入主题模型相关模块。
  3. 'def stopwordslist()',定义一个停用词列表的函数。

    • 该函数从 'stopwords.txt' 文件中读取停用词,并将它们存储在一个列表中,以便在后续处理中去除。
  4. 'stopwords = [line.strip() for line in open('./stopwords.txt',encoding='UTF-8').readlines()]',从文件中读取停用词,并将其保存在 'stopwords' 列表中。

    • 'open('./stopwords.txt',encoding='UTF-8')':打开名为 'stopwords.txt' 的文件,使用 UTF-8 编码。
    • '.readlines()':读取文件中的所有行,并将其存储在一个列表中。
    • 'line.strip()':去除每行文本首尾的空格或换行符。
    • 'stopwords = [...]':将处理后的每一行文本存储到 'stopwords' 列表中。
  5. 'def seg_depart(sentence)',定义对句子进行中文分词的函数。

    • 该函数接收一个句子作为参数,使用 jieba 库对句子进行分词处理,并去除停用词。
  6. 'sentence_depart = jieba.cut(sentence.strip())',切分句子。

    • 'jieba.cut(sentence.strip())':使用 jieba 库对句子进行分词处理。
  7. 'stopwords = stopwordslist()',获取停用词列表。

    • 调用 'stopwordslist' 函数,获取停用词列表。
  8. 'outstr = '',定义输出字符串。

    • 创建一个空字符串 'outstr',用于存储分词后的结果。
  9. 'for word in sentence_depart:,遍历切分后的词语。

    • 循环遍历分词后的词语列表 'sentence_depart'。
  10. 'if word not in stopwords:,如果该词语不在停用词列表中。 - 判断当前词语是否在停用词列表 'stopwords' 中。

  11. 'outstr += word,将该词语添加到输出字符串中。 - 如果词语不在停用词列表中,将其添加到输出字符串 'outstr' 中。

  12. 'outstr += ' ',在该词语后添加一个空格。 - 在每个词语后添加一个空格,以区分不同的词语。

  13. 'if not os.path.exists('./cnews.train_jieba.txt'):,如果./cnews.train_jieba.txt文件不存在,则进行分词处理。 - 'os.path.exists('./cnews.train_jieba.txt')':检查名为 'cnews.train_jieba.txt' 的文件是否存在。 - 'if not ...':如果文件不存在,则执行后续的分词处理逻辑。

  14. 'filename = './cnews.train.txt'',给出文档路径。 - 指定输入文件路径为 'cnews.train.txt'。

  15. 'outfilename = './cnews.train_jieba.txt'',给出输出文件路径。 - 指定输出文件路径为 'cnews.train_jieba.txt'。

  16. 'inputs = open(filename, 'r', encoding='UTF-8')',打开输入文件。 - 打开名为 'cnews.train.txt' 的输入文件,使用 'r' 模式读取文件内容,编码为 UTF-8。

  17. 'outputs = open(outfilename, 'w', encoding='UTF-8')',打开输出文件。 - 打开名为 'cnews.train_jieba.txt' 的输出文件,使用 'w' 模式写入文件内容,编码为 UTF-8。

  18. 'for line in inputs:,遍历输入文件中的每一行。 - 循环遍历输入文件 'inputs' 中的每一行文本。

  19. 'line = line.split(' ')[1]',分离出文本内容。 - 使用 'split(' ')' 方法将当前行文本根据制表符进行分割,并获取分割后的第二个元素,即文本内容。

  20. 'line = re.sub(r'[^一-龥]+','',line)',将非汉字的字符全部去掉。 - 使用正则表达式 'r'[^一-龥]+'' 将非汉字的字符全部替换为空字符串。

  21. 'line_seg = seg_depart(line.strip())',对文本内容进行分词处理。 - 调用 'seg_depart' 函数,对当前行文本进行分词处理。

  22. 'outputs.write(line_seg.strip() + ' ')',将处理后的文本内容写入输出文件。 - 将分词后的文本内容 'line_seg' 写入输出文件 'outputs',并在行尾添加换行符。

  23. 'outputs.close()',关闭输出文件。 - 关闭输出文件 'outputs'。

  24. 'inputs.close()',关闭输入文件。 - 关闭输入文件 'inputs'。

  25. 'print('删除停用词和分词成功!!!')',打印出删除成功的提示信息。 - 在分词处理完成后,打印提示信息,告知用户分词操作已成功。

总结:这段代码主要用于对中文文本进行分词和去除停用词的预处理操作,并将处理后的结果写入新的文件中,作为后续主题模型训练的输入数据。代码中使用了 jieba 库进行分词,并定义了自定义函数来去除停用词,并使用了正则表达式来去除非汉字字符,最终实现了对中文文本的预处理。

Python 中文文本预处理:分词、停用词去除

原文地址: https://www.cveoy.top/t/topic/mQfd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录