nltk库
nltk著名的自然语言处理库,自带语料库、词性分类库;自带分类、分词等功能;自带强大的社区;简单版本wrapper;
nltk.download()会弹出该页面,进行资源的下载
NLTK的module功能API
NLTK自带语料库,nltk.corpus是语料的集合,
import nltk
nltk.download('brown') # 需要先下载语料库
brown.categories() # 布朗大学语料库。
from nltk.corpus import brown #针对以上已经download之后,可直接import brown
brown.categories()
文本处理流程
文本处理,首先进行预处理:分词(Tokenize)等、......、再进行特征工程,用一个表达式(数字)来表示输入的句子,最后使用机器学习得到Labels/Targets。
Tokenize分词
将句子里面有意义的部件,拆分成数组中的每一个元素,中文分词与英文分词有很大不同。
中文可用1.启发式Heuristics;2。机器学习/统计方法:HMM、CRF。比较有名的库CoreNLP、jieba(全模式、精确模式、新词识别、搜索引擎模式)。
社交网络语言的tokenize
如果句子中包含一些特殊符号(@、表情符号等等),首先需要进行字符串处理进行一个标记,如下所示:
import re
emoticons_str = r"""
(?:
[:=;] # 眼睛
[oO\-]? # ⿐鼻⼦子
[D\)\]\(\]/\\OpP] # 嘴
)"""
regex_str = [
emoticons_str,
r'<[^>]+>', # HTML tags
r'(?:@[\w_]+)', # @某⼈人
r"(?:\#+[\w_]+[\w\'_\-]*[\w_]+)", # 话题标签
r'http[s]?://(?:[a-z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-f][0-9a-f]))+',
# URLs
r'(?:(?:\d+,?)+(?:\.?\d+)?)', # 数字
r"(?:[a-z][a-z'\-_]+[a-z])", # 含有 - 和 ‘ 的单词
r'(?:[\w_]+)', # 其他
r'(?:\S)' # 其他
]
正则表达式参考:网址
完整代码如下:
import re
emoticons_str = r"""
(?:
[:=;] # 眼睛
[oO\-]? # ⿐鼻⼦子
[D\)\]\(\]/\\OpP] # 嘴
)"""
regex_str = [
emoticons_str,
r'<[^>]+>', # HTML tags
r'(?:@[\w_]+)', # @某⼈人
r"(?:\#+[\w_]+[\w\'_\-]*[\w_]+)", # 话题标签
r'http[s]?://(?:[a-z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-f][0-9a-f]))+',
# URLs
r'(?:(?:\d+,?)+(?:\.?\d+)?)', # 数字
r"(?:[a-z][a-z'\-_]+[a-z])