英文词干提取器,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. 基于mykernel完成多进程的简单内核

    学号351 原创作品转载请注明出处 + https://github.com/mengning/linuxkernel/ mykernel简介 mykernel是由孟宁老师建立的一个用于开发您自己的操 ...

  2. SQL-58 获取有奖金的员工相关信息。

    题目描述 获取有奖金的员工相关信息.CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`fi ...

  3. 集合练习 练习:每一个学生Student都有一个对应的归属地定义为String类型。学生属性:姓名,年龄 注意:姓名和年龄相同的视为同一个学生。保证学生的唯一性。 1、描述学生。 2、定义Map容器,将学生作为键,地址作为值存入集合中。 3、获取Map中的元素并进行排序。

    package com.rf.xs.map; public class Student implements Comparable<Student> { private String na ...

  4. vue简单的日历

    <ul class="date"> <li v-for="(item, index) in list" :key="index&qu ...

  5. 第一次玩博客,今天被安利了一个很方便JDBC的基于Spring框架的一个叫SimpleInsert的类,现在就来简单介绍一下

    首先先对这段代码的简单介绍,我之前在需要操作JDBC的时候总是会因为经常要重新写SQL语句感到很麻烦.所以就能拿则拿不能拿的就简单地封装了一下. 首先是Insert.Spring框架的JDBC包里面的 ...

  6. Windows10 VS2017 C++模拟点击按键

    #include "pch.h" #include <Windows.h> #include <stdio.h> #include <iostream ...

  7. 利用axure软件实现app中的轮播图功能

    1.首先在axure软件中插入一张手机模型图片并调整为合适大小 2.在需要展示轮播图片位置拖入[动态面板]并且调整大小 拖入后双击动态面板,填入面板名称,并且添加面板状态(此处轮播图为三张,所以有三个 ...

  8. C# TCP与UDP

    Http使用端口是80 SMTP使用端口是25 TCP是首选协议,它提供有保证的传输.错误校正和缓冲. System.Net.Sockets. TcpClient类封装了TCP链接,提供属性字段来控制 ...

  9. Linux 环境下安装RabbitMQ的步骤

    #下载erlangcd /usr/local/devwget wget http://erlang.org/download/otp_src_17.5.tar.gz # 解压tar -xzvf otp ...

  10. 【证明】【一题多解】布尔不等式(union bound)的证明

    布尔不等式(Boole's inequality)也叫(union bound),即并集的上界,描述的是至少一个事件发生的概率(P(⋃iAi)" role="presentatio ...