• 自然语言处理


    一、字符串操作

    去空格及特殊符号

    s = ' hello, world!'
    #默认把左右空格去掉
    print s.strip()
    print s.lstrip(' hello, ')
    print s.rstrip('!')

    查找字符

    # < 0 为未找到
    sStr1 = 'strchr'
    sStr2 = 'tr'
    #找到返回目标子串开始下标
    nPos = sStr1.index(sStr2)
    print nPos

    大小写:upper()和lower()方法

    删除字符串:分片的方式

    比价字符串:cmp()

    分割

    s = 'ab,cde,fgh,ijk'
    print(s.split(','))

    二、正则表达式

    https://regexr.com/验证网站,翻墙进

    https://alf.nu/RegexGolf练习网站

    字符:

    .:匹配除换行符外所有字符

    d:所有数字

    D:所有除数字外所有字符

    s:空格、table键、换行

    S:除掉所有空格、table键、换行外所有

    w:数字,字符和下划线(大小写都有)

    对应大写都是除掉小写对应的规则的字符,即反规则

    数量词:

    {n}:找到两个对应前边规则的字符

    {m,n}找到m-n个前边规则的字符:d{2-4}找到长度为2到4的连续数字串

    ?:前边规则出现1次或者0次的:and?:an或者and都可以

    *:匹配到前边规则结束,即0到无限个,abc*:abc或者abccccccc或者ab

    +:1到无限个

    用括号可以表示规则组合:(ab)*:ababababab

    []:中括号里表示想要的字符[abc]:想要a和b和c   [a-g]:想要a-g的

    边界词:

    ^:后边跟规则,代表以xx开头的

    $:前边加规则,代表以xx结尾:^ab$:以a开头,b结尾的

    |:前后都加规则,代表或者

    python中正则表达式模块:re

    使用re的一般步骤是

    • 1.将正则表达式的字符串形式编译为Pattern实例
    • 2.使用Pattern实例处理文本并获得匹配结果(一个Match实例)
    • 3.使用Match实例获得信息,进行其他的操作。
    # encoding: UTF-8
    import re
     
    # 将正则表达式编译成Pattern对象,格式是r'模式串'
    pattern = re.compile(r'hello.*!')
     
    # 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None
    match = pattern.match('hello, hanxiaoyang! How are you?')
     
    if match:
        # 使用Match获得分组信息
        print match.group()

    三、jieba中文处理

    3.1基本分词函数与用法

    jieba.cut函数:

    • 需要分词的字符串
    • cut_all 参数用来控制是否采用全模式
    • HMM 参数用来控制是否使用 HMM 模型

    jieba.cur_for_search方法接受两个参数

    • 需要分词的字符串
    • 是否使用 HMM 模型。
    # encoding=utf-8
    import jieba
    
    seg_list = jieba.cut("我在学习自然语言处理", cut_all=True)
    print seg_list
    print("Full Mode: " + "/ ".join(seg_list))  # 全模式
    
    seg_list = jieba.cut("我在学习自然语言处理", cut_all=False)
    print("Default Mode: " + "/ ".join(seg_list))  # 精确模式
    
    seg_list = jieba.cut("他毕业于上海交通大学,在百度深度学习研究院进行研究")  # 默认是精确模式
    print(", ".join(seg_list))
    #cut_for_search的划分粒度很细
    seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在哈佛大学深造")  # 搜索引擎模式
    print(", ".join(seg_list))

    添加用户自定义词典

    针对自己的场景,可能会有一些领域内的专有词汇

    • 1.可以用jieba.load_userdict(file_name)加载用户字典
    • 2.少量的词汇可以自己用下面方法手动添加:
      • 用 add_word(word, freq=None, tag=None) 和 del_word(word) 在程序中动态修改词典
      • 用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来。

    关键词提取:

    1.基于TF-IDF算法的关键词提取

    jieba.analyse.extract_tags(sentence,topK=n,withWeight = False,allowPOS=())

    • sentence 为待提取的文本
    • topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
    • withWeight 为是否一并返回关键词权重值,默认值为 False
    • allowPOS 仅包括指定词性的词,默认值为空,即不筛选
    import jieba.analyse as analyse
    lines = open('NBA.txt').read()
    print "  ".join(analyse.extract_tags(lines, topK=20, withWeight=False, allowPOS=()))

  • 相关阅读:
    计算机网络:packet tracer模拟RIP协议避免路由回路实验
    计算机网络: 交换机与STP算法
    计算机网络:RIP协议与路由向量算法DV
    Flink-v1.12官方网站翻译-P002-Fraud Detection with the DataStream API
    Flink-v1.12官方网站翻译-P001-Local Installation
    DolphinScheduler1.3.2源码分析(二)搭建源码环境以及启动项目
    DolphinScheduler1.3.2源码分析(一)看源码前先把疑问列出来
    netty写Echo Server & Client完整步骤教程(图文)
    docker第一日学习总结
    Linux下统计CPU核心数量
  • 原文地址:https://www.cnblogs.com/stAr-1/p/8954202.html
Copyright © 2020-2023  润新知