python 自然语言处理第三章

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/duan20140614/article/details/78547940
1.访问文件:


A.本地文件
import os
file=open(path)----指针
file.read()----得到字符串
for line in file ----遍历文件的每一行
B.网络文件
from urllib import urlopen
file=urlopen(url)
file.read()


2.分词:


tokens=nltk.word_tokenize(string)----对字符串进行分词,得到list类型
**分词函数word_tokenize 的参数string中必须要有空格或其他标点才能分词
type(tokens) ----list类型




3.使用unicode 进行文件处理
模块:codecs
import codecs
file=codes.open(path,encoding="latin2")
for line in file:
line=line.encode("unicode_escape")----编码格式unicode_escape,将所有的非ASCII码的字符转换成“\uXXXX”的形式,但是在128到256之间的字符,转换成“\xXX”格式。


字符编码格式:
utf-8 ----用1-4个字节来表示字符
utf-16 ----2字节
utf-32 -----4字节
gbk ----不论中英文,都是两个字节
latin


编码字符:unicode,ASCII




4.正则表达式的应用
模块:re
import re


使用的元字符:
^:代表以什么开头 如:r^"ad"
$:以什么结尾
.:任意单个字符
?:前面的字符可选
[abc]:a|b|c
*:零次或多次重复
+:
{n}:重复n次
{n,}:至少n次
{,n}:至多n次
r"abc":表示是原始字符串,特殊字符不会被解释


函数:
(1).re.search("****",word) ----在查找是否有如模式"****"的单词
[w for w in wordlist if re.search(r"[a-z]+",w)]
(2).re.findall("****",word) -----找出单词word的所有正则表达式“****”
cv=[(cv,w] for w in text
for cv in re.findall(r"[ptksvr][aeiou]",w)]
nltk.index(cv) ----查找拥有正则表达式的单词


应用
a.规范文本:
词干提取器----nltk中的Porter和Lancaster
b.为文本分词
re.split(r"",sentence) ----使用正则表达式为句子分词

猜你喜欢

转载自blog.csdn.net/duan20140614/article/details/78547940