ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python 对文本进行分词

2022-08-20 09:30:08  阅读:137  来源: 互联网

标签:函数 python 列表 单词 frequency vdic 文本 分词


# 导入正则表达式相关模块
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()函数取值一个列表变量,再将这个列表变量的内容打印到终端,这样就看到了文本文件的所有英文单词

标签:函数,python,列表,单词,frequency,vdic,文本,分词
来源: https://www.cnblogs.com/vigo01/p/16607164.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有