自然语言处理
文章平均质量分 82
xiaopihaierletian
这个作者很懒,什么都没留下…
展开
-
《使用Python进行自然语言处理》学习笔记三
第二章 获得文本语料和词汇资源2.1 获取文本语料库1 古腾堡语料库Project Gutenberg的语料库包含>>>import nltk>>>from nltk.corpus import gutenberg>>>gutenberg.fileids() ['austen-emma.txt','austen-persuasion.txt', 'austen-sens原创 2017-06-21 19:35:45 · 413 阅读 · 0 评论 -
《使用Python进行自然语言处理》学习笔记八
第六章 学习分类文本6.1 有监督分类1 分类概述分类是为给定的输入选择正确的类标签的任务。在基本的分类任务中,每个输入被认为是与所有其它输入隔离的,并且标签集是预先定义的。基本的分类任务有许多有趣的变种。例如: 在多类分类中, 每个实例可以分配多个标签;在开放性分类中, 标签集是事先没有定义的; 在序列分类中, 一个输入链表作为一个整体分类。如果分类的建立基于包含每个输入的正确标签的原创 2017-06-21 22:43:37 · 312 阅读 · 0 评论 -
《使用Python进行自然语言处理》学习笔记五
第三章 加工原料文本3.1 从网络和硬盘访问文本1 电子书古腾堡项目的其它文本可以在线获得,整个过程大概需要几十秒(实验室网络不行是硬伤)使用raw()可以得到原始的字符串。但是raw得到的数据绝对不是我们能直接拿去分析的,还要经过一些预处理。我们要将字符串分解为词和标点符号,正如我们在第 1 章中所看到的。这一步被称为分词, 它产生我们所熟悉的结构,一个词汇和标点符号的链原创 2017-06-21 22:39:56 · 542 阅读 · 0 评论 -
《使用Python进行自然语言处理》学习笔记七
第五章 分类和标注词汇5.1 使用词性标注器1 POS概述将词汇按它们的词性(parts-of-speech , POS)分类以及相应的标注它们的过程被称为词性标注(part-of-speech tagging, POS tagging )或干脆简称标注。词性也称为词类或词汇范畴。 用于特定任务的标记的集合被称为一个标记集。一个词性标注器(part-of-speech tagger 或原创 2017-06-21 22:42:37 · 323 阅读 · 0 评论 -
《使用Python进行自然语言处理》学习笔记六
第四章 编写结构化程序4.1 回到基础1 赋值学过C,习惯了Java再过来学Python,感觉完全像《罗马假日》里安妮公主穿便装去城里撒欢一样。不需要声明,不需要初始化,随便用,太随意了。但是很快我就发现,自由对于理性不足的人来说是充满陷阱的。过于自由的语法提高了对经验的要求,新手很容易出现问题。所以还是决定,继续沿用MVC的模式和华为的Java编程规范来写python。也许等多写写后原创 2017-06-21 22:41:54 · 1794 阅读 · 0 评论 -
利用word2vec对关键词进行聚类
继上次提取关键词之后,项目组长又要求我对关键词进行聚类。说实话,我不太明白对关键词聚类跟新闻推荐有什么联系,不过他说什么我照做就是了。按照一般的思路,可以用新闻ID向量来表示某个关键词,这就像广告推荐系统里面用用户访问类别向量来表示用户一样,然后就可以用kmeans的方法进行聚类了。不过对于新闻来说存在一个问题,那就量太大,如果给你十万篇新闻,那每一个关键词将需要十万维的向量表示,随着新闻原创 2017-06-29 14:58:32 · 815 阅读 · 0 评论 -
gensim实现python对word2vec的训练和计算
词向量(word2vec)原始的代码是C写的,Python也有对应的版本,被集成在一个非常牛逼的框架gensim中。我在自己的开源语义网络项目graph-mind(其实是我自己写的小玩具)中使用了这些功能,大家可以直接用我在上面做的进一步的封装傻瓜式地完成一些操作,下面分享调用方法和一些code上的心得。1.一些类成员变量:[python] view plain cop转载 2017-06-22 20:31:18 · 5051 阅读 · 0 评论 -
Linux下CRF++安装工作
在平时工作中经常用到条件随机场(CRF)进行任务处理,比如做一些标注工作和命名实体识别工作。自己比较常用的工具就是CRF++。下载地址为:https://code.google.com/p/crfpp/(此下载地址已不可用)。官网地址为:https://taku910.github.io/crfpp/windows下面直接使用即可,Linux需要做一些编译任务。下载后解压缩进入目录。原创 2017-05-20 21:25:08 · 1660 阅读 · 0 评论 -
2020-09-23
一个基于keras实现seq2seq(Encoder-Decoder)的序列预测例子序列预测问题描述:输入序列为随机产生的整数序列,目标序列是对输入序列前三个元素进行反转后的序列,当然这只是我们自己定义的一种形式,可以自定义更复杂的场景。输入序列 目标序列[13, 28, 18, 7, 9, 5] [18, 28, 13][29, 44, 38, 15, 26, 22] [38, 44, 29][27, 40, 31, 29, 32, 1] [31原创 2020-09-23 20:09:40 · 111 阅读 · 0 评论 -
为你写诗简版 踩坑 keras.Embedding
今天用keras来实现为你写诗简版时,具体代码如下:在TensorFlow中的tf.contrib.layers.embed_sequence来对输入进行embedding时候,发现报了如下的错误:InvalidArgumentError (see above for traceback): indices[1,2] = 6 is not in [0, 6) [[Node: EmbedSequence_8/embedding_lookup = Gather[Tindices=DT_IN..原创 2020-09-21 17:38:22 · 244 阅读 · 0 评论 -
基于LSTM/BLSTM/CNNBLSTM的命名实体识别任务代码的解析--3
程序主要包括:main.py 主程序model.py 神经网络模型设置程序pretreatment.py :数据预处理程序2、model.py在该py文件中,主要有一个父类,三个子类,分别对应网络:LSTM、BLSTM、CNNBLSTM现在对各个部分进行介绍父类已经在上一篇博客中介绍过了,今天主要是介绍三个网络的代码2)LSTM class LSTM_NER(neural_tagger):def __str__(self):ret...原创 2020-09-15 18:22:15 · 419 阅读 · 0 评论 -
基于LSTM/BLSTM/CNNBLSTM的命名实体识别任务代码的解析--2
程序主要包括:main.py 主程序model.py 神经网络模型设置程序pretreatment.py :数据预处理程序2、model.py在该py文件中,主要有一个父类,三个子类,分别对应网络:LSTM、BLSTM、CNNBLSTM现在对各个部分进行介绍1)父类由于篇幅的原因相关的程序代码在git上,大家自行下载对照阅读从main.py文件通过run()函数进入model.py文件,所以再看代码的时候,找到def run()函数,下面对run()函数中的主...原创 2020-09-15 18:16:38 · 250 阅读 · 0 评论 -
基于LSTM/BLSTM/CNNBLSTM的命名实体识别任务代码的解析--1
原始代码来源于github,具体网址为:https://github.com/OustandingMan/LSTM-CRF但读入语料不是用的模板,而是自己写的读取数据的代码本人对深度学习的理解:处理数据:将数据处理成网络可以读取的格式 网络的搭建:“函数”的各种调用 训练:喂入神经网络数据进行训练,可能需要经过一定的时间 测试:对训练出的模型进行测试,并选取评估参数对训练出的模型进行量化的评估,即所谓的模型的好坏 调参数:尝试着对神经网络的参数进行调试(其实就是试试,看哪个参数使模.原创 2020-09-15 18:11:04 · 502 阅读 · 0 评论 -
关于中文分词的一元分词讨论
一元分词:指语句中每个字都成词,按字切分,不去组合,类似英文单词。回合1:支持一元分词的观点: 其实solr自带的跨语言自然一元分词就很好了,怎么测效果也不比国内搞的分词差,也许大多数情况下不需要国产的中文分词。下面列举原因,欢迎拍砖。 1. 不可能有一种中文分词算法能完全准确地分词,完全按中文分词进行的搜索不能保证搜索的全覆盖,而按字分词的结果是可以保证的 2. 中文原创 2017-05-20 20:50:25 · 812 阅读 · 0 评论 -
《使用Python进行自然语言处理》学习笔记一
第一章 语言处理与 Python一 安装NLTK环境1.1 windows 7 32的安装#也可以在CSDN里搜索下载,我为了怕以后找不到了,都有上传过1. 安装Python2.7(稳定版本,http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy);2. 安装NumPy:(http://www.lfd.uci.edu原创 2017-06-21 15:17:17 · 912 阅读 · 0 评论 -
基于条件随机场(CRF)的组织机构实体识别
组织机构实体主要指企事业单位、公司、组织、网站等。我的主要是从文本中识别出组织机构实体名称来。鉴于条件随机场在序列标注方面的优势,以及处理词语特征包括上下文环境特征方面,这次工作采用了条件随机场,具体工具为CRF++。1.语料预处理采用的语料是1998年1月份的《人民日报》语料,这个语料资源是公开的,从网上可以下载到。语料的格式如下所示:语料中已经做好标注,其中原创 2017-05-20 21:24:36 · 1484 阅读 · 0 评论 -
采用Stanford Parser进行中文语法解析
Stanford Parser是由StanforsNLP Group开发的基于Java的开源NLP工具,支持中文的语法分析,当前最新的版本为3.3.0,下载地址为:http://nlp.stanford.edu/software/lex-parser.shtml。下载后解压。解压文件中lexparser-gui.bat进行可视化页面运行,解析需要的模型文件存放在stanford-parser-3.原创 2017-05-20 21:18:30 · 2164 阅读 · 0 评论 -
采用Stanford CoreNLP实现英文单词词形还原
最近有个小的任务,根据英文单词的过去分词或现在分词或复数形式获取词语的原形,本来我的思路是:对于不规则变化的词语,建立不规则词表,直接从词表中查询;对于规则的词形变化,自己写规则进行还原。后来发现有些变化涉及到单词的发音,如重读闭音节要双写最后一个单词再变化,这样逆推的话就不好处理,从网上查询获取单词音标也没有实现好的结果。于是从网上搜索资料发现了Stanford CoreNLP这个工具。此工原创 2017-05-20 21:17:33 · 2904 阅读 · 0 评论 -
隐马尔科夫模型(Hidden Markov Model,HMM)
前言在李航的《统计学方法》第十章有对隐马尔科夫模型(Hidden Markov Model,HMM)比较详细的介绍和推导公式,我参考公式结合中文分词应用实现了隐马模型观测序列的生成、前向算法、维特比算法。本文在此针对HMM模型在中文分词中的应用,讲讲实现原理。我尽可能的撇开公式,撇开推导。结合实际开源代码作为例子,争取做到雅俗共赏,童叟无欺。没有公式,就没有伤害。理原创 2017-05-20 21:02:11 · 804 阅读 · 0 评论 -
Jieba中文分词说明
结巴分词介绍现在开源的中文分词工具,有IK、MMseg4j、THULAC、Ansj、Jieba、HanLP等,其中最近还在更新并维护的,也是目前分词效果比较优秀的要属于Ansj、Jieba、HanLP了。 之前我写过Ansj分词器的介绍说明博客,现在细谈一下Jieba分词的详细思路及其实现过程。结巴分词主页结巴分词的github主页地址是:https://github.原创 2017-05-20 21:00:39 · 1014 阅读 · 0 评论 -
Ansj中文分词说明
Ansj分词这是一个基于n-Gram+条件随机场模型的中文分词的java实现.分词速度达到每秒钟大约200万字左右(mac air下测试),准确率能达到96%以上目前实现了.中文分词. 中文姓名识别 . 用户自定义词典可以应用到自然语言处理等方面,适用于对分词效果要求高的各种项目.源码:https://github.com/NLPchina/ansj_seg原创 2017-05-20 20:56:35 · 608 阅读 · 0 评论 -
中文分词的条件随机场模型(CRF)介绍
CRF简介Conditional Random Field:条件随机场,一种机器学习技术(模型)CRF由John Lafferty最早用于NLP技术领域,其在NLP技术领域中主要用于文本标注,并有多种应用场景,例如:分词(标注字的词位信息,由字构词)词性标注(标注分词的词性,例如:名词,动词,助词)命名实体识别(识别人名,地名,机构名,商品名等具有一定内在规律的实体名词)原创 2017-05-20 20:54:54 · 1071 阅读 · 0 评论 -
《使用python进行自然语言理解》学习笔记二
第一章 安装NLTK环境四 NLTK下的基本操作1 命名小技巧(1) 排序表中大写字母出现在小写字母之前;(2) 选择有意义的变量名,它能提醒你代码的含义,也帮助别人读懂你的代码;(3) 经常使用变量来保存计算的中间步骤,尤其是当这样做使代码更容易读懂时;(4) 应该以字母开始,大小写敏感,不能包含空格但可以用下划线;2 字符串的合并和拆分(1) ' '.join(原创 2017-06-21 19:34:36 · 541 阅读 · 0 评论 -
《使用Python进行自然语言处理》学习笔记四
第二章 获得文本语料和词汇资源2.2 条件频率分布1条件和事件频率分布计算观察到的事件,如文本中出现的词汇。条件频率分布需要给每个时间关联一个条件,所以不是处理一个词序列,我们必须处理的是一个配对序列。每对的形式是:(条件,事件) 。2按文体计数词汇FreqDist()以一个简单的链表作为输入,ConditionalFreqDist()以一个配对链表作为输入。参见代码模块N原创 2017-06-21 19:36:30 · 330 阅读 · 0 评论 -
中文分词研究入门
中文分词研究入门 导读本文首先简单介绍了自然语言处理和科研过程中重要的四部曲——调研、思考、编程和写作,然后对中文分词问题进行了说明,介绍了中文分词存在的难点如消歧、颗粒度问题、分词标准等。接着,本文总结了调研文献中的分词方法,包括基于词典的最大匹配法以及其相应的改进方法、基于字标注的分词方法等,同时也介绍了当前中文分词的研究进展和方向,如统计与词典相结合、基于深度学习的分词方法等。而原创 2017-06-21 22:26:18 · 502 阅读 · 0 评论 -
MIT自然语言处理第四讲:标注
MIT自然语言处理第四讲:标注(第一部分)自然语言处理:标注Natural Language Processing: Tagging作者:Regina Barzilay(MIT,EECS Department, November 15, 2004)译者:我爱自然语言处理(www.52nlp.cn ,2009年2月24日)上一讲主要内容回顾(Last time转载 2017-04-07 15:25:48 · 418 阅读 · 0 评论 -
openNLP在eclipse中配置和使用
这学期学习了一门课程《自然语言处理》,关于自然语言处理有很多开源的工具,这里主要介绍openNLP在eclipse中的配置及使用方法,首先介绍openNLP 这个开源工具。 openNLP是一种基于自然语言处理的机器学习工具,是基于最大熵的一种开源工具,主要封装了以下任务,tokenization, sentence segmentation, part-of-spe转载 2017-06-22 20:10:43 · 544 阅读 · 1 评论 -
英语NLP词汇类别列表
CC 并列连词, Coordinating conjunctionCD 数词, Cardinal numberDT 限定词, DeterminerEX 存在量词, Existential thereFW 外来词, Foreign wordIN 介词,原创 2017-06-22 18:55:00 · 800 阅读 · 0 评论 -
中文语料库
1. 语料库的类别:语料库可分为生语料库和标注语料库。标注语料库,如分词库,分词与词性标注库,树库,命题库,篇章树库。中文分词库的目的是训练和测试汉语的自动分词系统,其他库的目的类似。树库以句法结构信息为主要标注内容。命题库以谓词-论元结构信息为主要标注内容。篇章树库以篇章结构信息为主要内容。也有语料库可用于文本分类,主题检测(如搜狗文本分类语料库)。语转载 2017-06-22 17:04:40 · 2157 阅读 · 0 评论 -
自然语言处理怎么最快入门
自然语言处理(简称NLP),是研究计算机处理人类语言的一门技术,包括:1.句法语义分析:对于给定的句子,进行分词、词性标记、命名实体识别和链接、句法分析、语义角色识别和多义词消歧。2.信息抽取:从给定文本中抽取重要的信息,比如,时间、地点、人物、事件、原因、结果、数字、日期、货币、专有名词等等。通俗说来,就是要了解谁在什么时候、什么原因、对谁、做了什么事、有什么结果。涉及到实体识别、时间抽转载 2017-06-22 16:55:59 · 430 阅读 · 0 评论 -
自然语言处理如何入门
大家回答的都挺不错了,只好来强答。一、独立实现一个小型的自然语言处理项目。要找一个合适的的自然语言处理相关的开源项目。这个项目可以是与自己工作相关的,也可以是自己感兴趣的。项目不要太大,以小型的算法模块为佳,这样便于独立实现。像文本领域的文本分类、分词等项目就是比较合适的项目。 运行程序得到项目所声称的结果。然后看懂程序,这期间一般需要阅读程序实现所参考的文献。最后,自己尝试独立实现该转载 2017-06-22 16:55:20 · 750 阅读 · 0 评论 -
Python下的英文预处理
一 得到原始文本内容[python] view plain copy def FileRead(self,filePath): f = open(filePath) raw=f.read() return raw 二 分割成句子[python] view plain copy def SenT原创 2017-06-21 22:48:13 · 2534 阅读 · 1 评论 -
Python下的中文分词实现
一 安装和测试Python下的中文分词工具参考http://hi.baidu.com/fooying/item/6ae7a0e26087e8d7eb34c9e8的帖子“四款Python中文分词系统简单测试”。从评测的结果来看在python下可以采用的较好的中文分词工具是结巴中文分词和中科院的分词系统。对于这两个工具进行测试。1 安装结巴中文分词工具在32位,Window原创 2017-06-21 22:53:20 · 6319 阅读 · 0 评论 -
开源NLP工具(包括分词工具)
中文词法分析THULAC:一个高效的中文词法分析工具包包括中文分词、词性标注功能。已经提供C++、Java、Python版本。中文文本分类THUCTC: 一个高效的中文文本分类工具提供高效的中文文本特征提取、分类训练和测试功能。THUTag: 关键词抽取与社会标签推荐工具包GitHub - YeDeming/THUTag: A Package of Keyphr原创 2017-05-20 20:46:16 · 6080 阅读 · 0 评论 -
中文分词原理和实现
三大主流分词方法:基于词典的方法、基于规则的方法和基于统计的方法。1、基于规则或词典的方法定义:按照一定策略将待分析的汉字串与一个“大机器词典”中的词条进行匹配,若在词典中找到某个字符串,则匹配成功。按照扫描方向的不同:正向匹配和逆向匹配按照长度的不同:最大匹配和最小匹配1.1正向最大匹配思想MM从左向右取待切分汉语句的m个字符作为匹配字段,m为大机原创 2017-05-20 16:39:38 · 2437 阅读 · 2 评论 -
读《统计自然语言处理》——马尔可夫模型
前面已经学习完词法,现在就可以学习语法了。语法学习中比较常用的是马尔可夫模型,然后进行词性标注,接着采用概率上下文无关文法学习人们说话的方式存在的一些结构和规则,最后采用概率句法分析来识别出高层次的结构但愿来简化句子的描述,实现语块分析。下面先来介绍马尔可夫模型。 markov模型,具体来说是隐形马尔可夫模型已经成为现代语音识别系统中构建统计模型的重要手段,即使存在不足,但原创 2017-04-06 11:01:33 · 529 阅读 · 0 评论 -
读《统计自然语言处理》——词汇获取
由于语言中的新词和旧词的用法不断在变化,以及自然语言的多产性,因此我们经常感兴趣的大部分词的特性并没有被收录到电子词典中。即使今天可以编辑一个覆盖整个语言的词汇,大约一个月之后仍然会发现该词典的不完善,从而不能很好的描述当前的语言特性。因此,统计自然语言处理需要进行词汇获取这一步骤。词汇获取的目的是通过考察大型文本的语料库中词汇的出现模型,设计一种算法和统计技术来填补现有电子词典的不足。简而言之,原创 2017-04-06 10:53:43 · 713 阅读 · 0 评论 -
读《统计自然语言处理》——语义消除歧义
我们知道很多词语都有很多意思或语义,而在具体的语境中,词语有某种特定的意思。而独立于上下文来考虑词语意思,语义一般都会出现语义歧义。统计自然语言处理不得不考虑如何消除歧义问题。消除歧义的任务就是确定一个多义词在一个特定的语境中使用哪一种语义。通过考虑词汇使用的上下文完全可以确定其具体的语义。那么如何确定一个词汇具有的语义,以及从这些语义确定某一种具体的语义呢? 比较原创 2017-04-06 10:10:14 · 1749 阅读 · 0 评论 -
读《统计自然语言处理》——统计推理
统计自然语言处理的目的就是针对自然语言领域进行统计推理。统计推理就是在统计概率的基础上进行预测,包括:1、数据处理,从而获得未知的概率分布;2、根据这些数据概率分布得到一些推论,并用于将来的预测。为了进一步分析统计推理,我们将该问题分析三个步骤进行阐述:1、将训练数据划分为等价类;2、为每一个等价类寻找一个好的统计估计;3、合并多个估计。一、为了能够将训练数据划分为等价类,我们首先需要构造原创 2017-04-06 10:00:25 · 783 阅读 · 0 评论 -
读《统计自然语言处理》——语料库与知识词汇库
语料库包含一定篇目(语篇),每篇篇目包含一定量的词汇。语种:单语种语料库,多语种语料库;记载媒体:单媒体语料库,多媒体语料库;地域:国家语料库,国际语料库;以语料库代表性和平衡性为主要区分依据的:平衡语料库,平行语料库;平衡性好坏取决于语料库中语料的使用度是否可以真实反映语言使用情况。平行型表现为语料选取的时间、对象、比例、文本数、文本长度等几乎一致(一般用于机器翻原创 2017-03-31 15:09:11 · 1359 阅读 · 0 评论