python 对文本进行分词

# 导入正则表达式相关模块
import re


# 定义一个函数,通过该函数查找文本字符串中的每一个单词
# 然后计算每个单词出现的次数,最后按照出现次数从多到少放到变量中
def get_char(txt):
    # 通过re.split()函数将英文单词分别取出来,函数的第一个参数是分隔符
    # 第一个参数指定以":" ";"  ","  "." """ 和空格(\s)以及0个或多个空格(\s*)作为分隔符
    # 第二个参数是要拆分的字符串
    # 通过以下代码把字符串分成一个个单词(以分隔符划分)
    # 将分隔出来的单词放到列表变量vlist中
    vlist = re.split('[:;,."\s]\s*', txt)
    # 生产字典变量
    vdic_frequency = dir()
    # 遍历列表变量
    for vchar in vlist:
        # 取出每个单词 并判断字典中是否存在一个元素项(键值对)
        # 该项键名是以该单词命名
        if vchar in vdic_frequency:
            # 如果存在,将该单词命名的键的值加1
            vdic_frequency[vchar] += 1
        else:
            vdic_frequency[vchar] = 1
    # 对字典中的项按键值进行排序,并且是倒叙排序(reverse=True)
    vdic_sort = sorted(vdic_frequency.items(), key=lambda item: item[1], reverse=True)
    return vdic_sort


# 主函数为main

if __name__ == '__main__':
    # 打开文件,读出文件文本
    # 其中test.txt 文件是当前目录下的一篇英文文章,文本类型
    with open('test.txt', 'r') as f:
        vtext = f.read()

    # 调用排序函数
    vstr = get_char(vtext)
    print('列出文本中的英文单词:\n')
    # 在终端上打印文本中的单词
    print(vstr)

 

(1)get_char()函数的主要流程是:首先用re模块的split()函数对字符串进行分割,这里主要注意的是split()函数的第一个参数实际上是一个正则表达式它能识别多个分隔符,以上实现正确分隔英文单词的目标。split()函数返回一个列表变量,这个列表变量中的每一项是一个单词,接着把单词从列表中取出来加入字典中,这个字段的键名用单词命名,键值用这个单词的在字符串中出现的次数赋值,实现的方式是通过循环遍历列表统计出每个单词出现的次数,然后用统计出的数据修改字典,最后按字典单词何该单词出现的次数两个值组成

(2)主函数的流程是从一个文本 文件中读入一个英文长字符串,然后调用get_char()函数取值一个列表变量,再将这个列表变量的内容打印到终端,这样就看到了文本文件的所有英文单词

posted @ 2022-08-20 09:25  剑尊  阅读(511)  评论(0编辑  收藏  举报