自然语言处理综论
nlg-eval安装不上 git也不好使,直接下载到 site-packgaes执行python setup.py install就行

字符串处理

去空格或特殊字符

str.strip() 去掉所有空格,rstrip() lstrip() 去掉两边的空格
str.strip(‘A’)去掉指定的字符

替换操作

str.replace('A','B')替换

查找操作

str.find('A')

判断操作

str.alpha() str.isdigit()

分割合并操作

split()

split(‘ ‘,2)第一个是分割符号,2是maxsplit
str.split(' ')

.join()

<sep>.join(<iterable>)
' '.join(str) 以空格为分隔符合并

调取帮助文档

help(str)

正则表达式

选择匹配模式

pattern = re.compile(r'.')分开所有的单个字符?
pattern = re.comilpe(r'[abc]') pattern = re.compile(r'[^a-zA-Z]') 根据字符集合
或方法
pattern = re.compile(r'[a-zA-Z]|[0-9]')
\d 匹配数字 \D匹配非数字
重复:* + ?
精确匹配和最小匹配:{m}
match 和 search

字符串的替换和修改

sub (rule, replace, target[,count])
subn

切片函数

split

命名组

‘(?P…)’

NLTK

pip install nltk 之后 还要nltk.download() 需要手动下载包

分词

from nltk.tokenize import word_tokenize
from nltk.text import Text
tokens = nltk.tokenize(str)
tokens = [word.lower() for word in tokens]
t = Text(tokens) t.count t.index()

创建Text对象

停用词过滤

from nltk.corpus import stopwords
stopwords.raw(‘english’).replace(‘\n’,’ ‘)
使用set操作查看交集

词性标注

from nltk import pos_tag
tags = pos_tag(tokens) # 抽取词性

分块

根据规则解析

命名实体识别

from nltk import ne_chunk
sentence = ‘abc de’
print(ne_chunk(pos_tag(wordtokenize(sentence))))

结巴分词器

  • 关键词抽取
  • 词性标注

    词云展示

    wordcloud
  1. 先分词,统计次数
  2. 指定个图片开画

    语言模型

    N-gram模型

    统计词频
    下一个单词出现的概率跟前面的相关

    词向量

    语义相近的词在空间上要近

    神经网络模型

Hierarchical Softmax

根据哈夫曼树,分层构造Softmax,常用的词频高的放在第一个

CBOW

负采样模型

使用Gensim库构造词向量