python自然语言处理-读书笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zlp_zky/article/details/83013535
#使用UniCode进行文字处理
#Unicode支持超过一百万种字符。每个字符分配一个编号,称为编码点。在 Python中, 编码点写作\uXXXX 的形式,其中 XXXX是四位十六进制形式数。

#从文件中提取已编码文本
import codecs
path = nltk.data.find('corpora/unicode_samples/polish-lat2.txt')
f = codecs.open(path, encoding='latin2') #我们可以使用f = codecs.open(path, 'w', encoding='utf -8')写入 Unicode 编码数据到一个文件。
for line in f:
    line = line.strip()
    print(line.encode('unicode_escape'))

import re #在python中使用正则表达式,需要使用re函数库,还需要用于搜索的词汇链表
wordlist=[w for w in nltk.corpus.words.words('en') if w.islower()]
print([w for w in wordlist if re.search('ed$', w)])#使用正则表达式«ed$»查找以ed 结尾的词汇。re.search(p, s)检查字符 串s 中是否有模式 p
print([w for w in wordlist if re.search('^..j..t..$', w)])#通配符“.”匹配任何单个字符。假设我们有一个8 个字母组成的词的字谜室,j 是其第 三个字母,t 是其第六个字母。空白单元格中的每个地方,我们用一个句点
#插入符号“^”匹配字符串的开始,就像“$”符号匹配字符串的 结尾
#最后,符号“?”表示前面的字符是可选的。因此«^e-?mail $»将匹配 email 和 e-mai l。我们可以使用sum(1 for w in text if re.search('^e-? mail$', w))计数一个文本 中这个词(任一拼写形式)出现的总次数。
print( [w for w in wordlist if re.search('^[ghi][mno][jlk][def]$', w)])#两个或两个以上的词汇以相同的击键顺序 输入,这叫做输入法联想提示。例如:hole 和golf 都是通过输入序列4653。

chat_words = sorted(set(w for w in nltk.corpus.nps_chat.words()))
print([w for w in chat_words if re.search('^m+i+n+e+$', w)])
print([w for w in chat_words if re.search('^[ha]+$', w)])#“+”表示的是“前面的项目的一个或多个实例,现在让我们用“*”替换“+”,它表示 “前面的项目的零个或多个实例。
#:«[^aei ouAEIOU]»匹配除元音字母之外的所有字母。

猜你喜欢

转载自blog.csdn.net/zlp_zky/article/details/83013535