英文词干提取器,import nltk,porter = nltk.PorterStemmer(),porter.stem('lying') 。

词性标注器,pos_tag处理词序列,根据句子动态判断,import nltk,text = nltk.word_tokenize("And now for something completely different”),nltk.pos_tag(text) 。CC 连接词,RB 副词,IN 介词,NN 名次,JJ 形容词。

标注自定义词性标注语料库,tagged_token = nltk.tag.str2tuple('fly/NN') 。字符串转成二元组。布朗语料库标注 nltk.corpus.brown.tagged_words() 。

nltk中文语料库,nltk.download()。下载 Corpora sinica_treebank,台湾中国研究院。

# coding:utf-8

import sys
import importlib
importlib.reload(sys)
import nltk

for word in nltk.corpus.sinica_treebank.tagged_words():
print(word[0], word[1])

jieba切词,https://github.com/fxsjy/jieba,自定义语料中文切词,自动词性标注。

词性自动标注。默认标注器 DefaultTagger,标注为频率最高词性。

# coding:utf-8

import sys
import importlib
importlib.reload(sys)
import nltk

default_tagger = nltk.DefaultTagger('NN')
raw = '我 好 想 你'
tokens = nltk.word_tokenize(raw)
tags = default_tagger.tag(tokens)
print(tags)

正则表达式标注器,RegexpTagge,满足特定正则表达式词性。

# coding:utf-8

import sys
import importlib
importlib.reload(sys)
import nltk

pattern = [(r'.*们$','PRO')]
tagger = nltk.RegexpTagger(pattern)
print(tagger.tag(nltk.word_tokenize('我们 一起 去 你们 和 他们 去过 的 地方')))

查询标注器,多个最频繁词和词性,查找语料库,匹配标注,剩余词用默认标注器(回退)。

一元标注,已标注语料库训练,模型标注新语料。

# coding:utf-8

import sys
import importlib
importlib.reload(sys)
import nltk

tagged_sents = [[(u'我', u'PRO'), (u'小兔', u'NN')]]
unigram_tagger = nltk.UnigramTagger(tagged_sents)
sents = [[u'我', u'你', u'小兔']]
# brown_tagged_sents = nltk.corpus.brown.tagged_sents(categories='news')
# unigram_tagger = nltk.UnigramTagger(brown_tagged_sents)
# sents = nltk.corpus.brown.sents(categories='news')
tags = unigram_tagger.tag(sents[0])
print(tags)

二元标注、多元标注,一元标注 UnigramTagger 只考虑当前词,不考虑上下文。二元标注器 BigramTagger 考虑前面词。三元标注 TrigramTagger。

组合标注器,提高精度和覆盖率,多种标注器组合。

标注器存储,训练好持久化,存储硬盘。加载。

# coding:utf-8

import sys
import importlib
importlib.reload(sys)
import nltk

train_sents = [[(u'我', u'PRO'), (u'小兔', u'NN')]]
t0 = nltk.DefaultTagger('NN')
t1 = nltk.UnigramTagger(train_sents, backoff=t0)
t2 = nltk.BigramTagger(train_sents, backoff=t1)
sents = [[u'我', u'你', u'小兔']]
tags = t2.tag(sents[0])
print(tags)

from pickle import dump
print(t2)
output = open('t2.pkl', 'wb')
dump(t2, output, -1)
output.close()

from pickle import load
input = open('t2.pkl', 'rb')
tagger = load(input)
input.close()
print(tagger)

机器学习,训练模型,已知数据统计学习;使用模型,统计学习模型计算未知数据。有监督,训练样本数据有确定判断,断定新数据。无监督,训练样本数据没有判断,自发生成结论。最难是选算法。

贝叶斯,概率论,随机事件条件概率。公式:P(B|A)=P(A|B)P(B)/P(A)。已知P(A|B)、P(A)、P(B),计算P(B|A)。贝叶斯分类器:

# coding:utf-8

import sys
import importlib
importlib.reload(sys)
import nltk

my_train_set = [
({'feature1':u'a'},'1'),
({'feature1':u'a'},'2'),
({'feature1':u'a'},'3'),
({'feature1':u'a'},'3'),
({'feature1':u'b'},'2'),
({'feature1':u'b'},'2'),
({'feature1':u'b'},'2'),
({'feature1':u'b'},'2'),
({'feature1':u'b'},'2'),
({'feature1':u'b'},'2'),
]
classifier = nltk.NaiveBayesClassifier.train(my_train_set)
print(classifier.classify({'feature1':u'a'}))
print(classifier.classify({'feature1':u'b'}))

分类,最重要知道哪些特征最能反映分类特点,特征选取。文档分类,最能代表分类词。特征提取,找到最优信息量特征:

# coding:utf-8

import sys
import importlib
importlib.reload(sys)
import nltk
from nltk.corpus import movie_reviews
import random

documents =[(list(movie_reviews.words(fileid)),category)for category in movie_reviews.categories()for fileid in movie_reviews.fileids(category)]
random.shuffle(documents)
all_words = nltk.FreqDist(w.lower() for w in movie_reviews.words())
word_features = [word for (word, freq) in all_words.most_common(2000)]
def document_features(document):
document_words = set(document)
features = {}
for word in word_features:
features['contains(%s)' % word] = (word in document_words)
return features

featuresets = [(document_features(d), c) for (d,c) in documents]
# classifier = nltk.NaiveBayesClassifier.train(featuresets)
# classifier.classify(document_features(d))

train_set, test_set = featuresets[100:], featuresets[:100]
classifier = nltk.NaiveBayesClassifier.train(train_set)
print(nltk.classify.accuracy(classifier, test_set))
classifier.show_most_informative_features(5)

词性标注,上下文语境文本分类。句子分割,标点符号分类,选取单独句子标识符合并链表、数据特征。识别对话行为,问候、问题、回答、断言、说明。识别文字蕴含,句子能否得出另一句子结论,真假标签。

参考资料:
http://www.shareditor.com/blogshow?blogId=67
http://www.shareditor.com/blogshow?blogId=69
https://www.jianshu.com/p/6e5ace051c1e
《Python 自然语言处理》

欢迎推荐上海机器学习工作机会,我的微信:qingxingfengzi

学习笔记CB002:词干提取、词性标注、中文切词、文档分类的更多相关文章

  1. Spring Boot学习笔记 - 整合Swagger2自动生成RESTful API文档

    1.添加Swagger2依赖 在pom.xml中加入Swagger2的依赖 <!--swagger2--> <dependency> <groupId>io.spr ...

  2. perl学习笔记之:模式匹配,模块,文档

    Perl语言的最大特点,也是Perl作为CGI首选语言的最大特点,是它的模式匹配操作符.Perl语言的强大的文本处理能力正是通过其内嵌的对模式匹配的支持体现的.模式通过创建正则表达式实现.Perl的正 ...

  3. Http,Https (SSL)的Url绝对路径,相对路径解决方案Security Switch 4.2 中文帮助文档 分类: ASP.NET 2014-10-28 14:09 177人阅读 评论(1) 收藏

    下载地址1:https://securityswitch.googlecode.com/files/SecuritySwitch%20v4.2.0.0%20-%20Binary.zip 下载地址2:h ...

  4. 【转帖】(一)unity4.6Ugui中文教程文档-------概要

    原帖至上,移步请戳:(一)unity4.6Ugui中文教程文档-------概要 unity4.6中的一个重要的升级就是GUI ,也把它称为UGUI ,废话我不多说,大家可以百度了解一下. 虽然现在处 ...

  5. vim中文帮助文档安装

    vim自带的帮助手册是英文的, 对平时编程的人来说没有多大阅读困难,在何况还有"星级译王"呢, 但是我猜和我一样连英语四级都愁的大有人,可偏偏就有一帮好心人人将其翻译成了中文, 可 ...

  6. 【译】StackExchange.Redis中文使用文档

    StackExchange.Redis中文使用文档 Intro 最近想深入学习一些 Redis 相关的东西.于是看了看官方的项目StackExchange.Redis,发现里面有一份文档,于是打算翻译 ...

  7. StackExchange.Redis中文使用文档

    StackExchange.Redis中文使用文档 Intro 最近想深入学习一些 Redis 相关的东西.于是看了看官方的项目 StackExchange,发现里面有一份文档,于是打算翻译成中文,方 ...

  8. 学习排序算法(一):单文档方法 Pointwise

    学习排序算法(一):单文档方法 Pointwise 1. 基本思想 这样的方法主要是将搜索结果的文档变为特征向量,然后将排序问题转化成了机器学习中的常规的分类问题,并且是个多类分类问题. 2. 方法流 ...

  9. 安装配置Vim中文帮助文档

    1.home/.vimrc是用户自己的vim配置文件,在这个配置文件中设置的配置只影响该用安装前的准备工作: 在home目录下列新建文件夹  : .vim ------------------> ...

随机推荐

  1. lvs,nginx反向代理,虚拟主机

    LVS NAT 拓扑 client | | LVS | | ------------------- | | | RS1 RS2 RS3 地址规划如下 机器名称 ip配置 ip配置 备注信息 LVS 1 ...

  2. springboot-mybatis多数据源以及踩坑之旅

    首先,springboot项目结构如下 springboot配置文件内容如下 动态数据源的配置类如下(必须保证能被ComponentScan扫描到): 1 package com.letzgo.con ...

  3. Python的布尔值与空值

    1.Boolean值(布尔值) 一个布尔值只有Ture.False两种值 b1 =True b2 =False print (b1,b2)>>>True False 2.空值(non ...

  4. Django中views笔记

    reverse反解析 #路由中定义namespace.name,reverse可将其转换为url url = reverse('namespace:name') return redirect(url ...

  5. 图像转化成TFrecords格式并回转

    import os import tensorflow as tf from PIL import Image import numpy as np cat_image_path='D:/软件/pyc ...

  6. Bring up a Kafka-based Ordering Service

    Bring up a Kafka-based Ordering Service 这篇文章假设读者对怎样设置Kafka集群和ZooKeeper集合已经初步了解.这篇文章的目的是讲解部署一个基于Kafka ...

  7. L358 World Book Day

    World Book Day is celebrated by UNESCO and other related organisations every year on the 23rd of Apr ...

  8. 20175223 《Java程序设计》 第八周学习总结

    目录 教材学习内容总结 教材学习中的问题和解决过程 1. StarUML 的使用方法. 2. 在IDEA中以TDD的方式对String类和Arrays类进行学习 代码调试中的问题和解决过程 1. 问题 ...

  9. python自动生成bean类

    近期在学习python,一直在和java做对比,目前没有发现有通过字段自动生成getter setter方法,故此自己写了一个类,可以通过__init__方法传入类名和字段数组,再调用内部的方法,就可 ...

  10. key单片机按键抖动

    //write by:cyt //Time:2017-2-10 //Porject Name:key shake_destory #include<reg51.h> #define GPI ...