精华内容
下载资源
问答
  • 中文词性标注

    千次阅读 2017-02-23 19:45:04
    中文词性标注

    中文词性标注

    最近我想练习一下中文词性标注,所以找了一个数据集,人民日报PKU数据集。


    数据集

    数据集来自北大计算语言所,对1998年1月《人民日报》中的句子进行词性标注,语料格式为:

    19980101-01-001-001/m 迈向/v 充满/v 希望/n 的/u 新/a 世纪/n ——/w 一九九八年/t 新年/t 讲话/n (/w 附/v 图片/n 1/m 张/q )/w

    这个数据集中总共19484个句子提供训练测试。我对语料集做了特殊处理,去掉了不规范的不含’/'的标注,使得标注更加规范。


    工具脚本

    由于数据集内并不附赠脚本,所以我自己实现了一个工具脚本tool.py

    tool.py
    
    '''
    	tool.py
    	This is a tool for scoring posTag algorithm.
    	Just scoring an algorithm with:
    		> driver(trainLines, testLines, trainFunction, posTagFunction):
    	And this tool will print a report of accuracy.
    	Note: There are 19484 sentences in data set 'data.txt'.
    	
    	Zhang Zhiyuan ,EECS Peking Univ. 2017/02/23
    '''
    
    class dataType:
    	def __init__(self):
    		self.__fd = open('data.txt', 'r')
    		self.__total = 0
    		self.__correct = 0
    		
    	def getTrainLine(self):
    		while True:
    			bufferLine = self.__fd.readline().strip()
    			if len(bufferLine) > 0:
    				return bufferLine
    		
    	def getTestLine(self):
    		while True:
    			self.__buffer = self.__fd.readline().strip()
    			line = self.__buffer
    			for word in line.split():
    				line = line.replace(word, word.split('/')[0])
    			if len(line) > 0:
    				return line
    	
    	def testLine(self, line):
    		lineList = line.split()
    		bufferList = self.__buffer.split()
    		l = len(lineList)
    		for i in range(l):
    			self.__total += 1
    			if lineList[i].split('/')[1] == bufferList[i].split('/')[1]:
    				self.__correct += 1
    	
    	def report(self):
    		print('Accuracy = %.5f' % (self.__correct / self.__total))
    
    def driver(trainLines, testLines, trainFunction, posTagFunction):
    	totalLines = 19484
    	if trainLines + testLines > totalLines:
    		print('Too many lines!')
    		return
    	data = dataType()
    	for i in range(trainLines):
    		line = data.getTrainLine()
    		trainFunction(line)
    	for i in range(testLines)
    		data.testLine(posTagFunction(data.getTestLine()))
    	data.report()
    

    脚本使用方法如注释所示,只需要调用函数driver()即可,下面举个例子来说明工具脚本使用方法

    import tool
    
    def train(line):
    	line = line
    
    def posTag(line):
    	return('19980131-04-013-027/m  才/d  发觉/v  已/d  迷失/v  了/u  来路/n  。/w')
    	
    tool.driver(19483, 1, train, posTag)
    

    请注意这个版本并不做实际计算,只是示意了训练函数和分词函数如何测试,而分词函数只是输来自数据集的答案,那么脚本会输出成绩:

    Accuracy = 1.00000
    

    如果修改训练句子数量为19484,那么因为用光了数据集,会输出:

    Too many lines!
    

    这些工具用面向对象风格实现,并封装在tool.py,以后测试不同算法只需要调用tool即可。如果有自然语言处理领域的爱好者学习者,可以自行下载数据集,并且把我的脚本拿去用使用。

    朴素版本示例

    最朴素的想法,对于一个词,给出最常见的标注方法。实现如下,做一个测试。

    naive.py
    
    import tool
    
    dic = {}
    
    def train(line):
    	for wordTag in line.split():
    		word, tag = wordTag.split('/')
    		if word in dic:
    			if tag in dic[word]:
    				dic[word][tag] += 1
    			else:
    				dic[word][tag] = 1
    		else:
    			dic[word] = {tag: 1}
    			
    def posTag(line):
    	lineList = line.split()
    	l = len(lineList)
    	for i in range(l):
    		word = lineList[i]
    		if word in dic:
    			bestTag = ''
    			bestTagFreq = 0
    			for tag in dic[word]:
    				if dic[word][tag] > bestTagFreq:
    					bestTagFreq = dic[word][tag]
    					bestTag = tag		
    			lineList[i] = lineList[i] + '/' + bestTag
    		else:
    			lineList[i] = lineList[i] + '/' + 'unknow'
    	return(' '.join(lineList))
    		
    tool.driver(10000, 5000, train, posTag)
    

    测试结果也不错,说明汉语中大部分词词性是很固定的,所以统计表词性可以直接获得不低的成绩。

    Accuracy = 0.86114
    

    做好了准备工作,可以开始学习中文词性标注,实现其他脚本了~

    展开全文
  • pyhanlp 中文词性标注与分词简介pyhanlp实现的分词器有很多,同时pyhanlp获取hanlp中分词器也有两种方式第一种是直接从封装好的hanlp类中获取,这种获取方式一共可以获取五种分词器,而现在默认的就是第一种维特比分...

    pyhanlp 中文词性标注与分词简介

    pyhanlp实现的分词器有很多,同时pyhanlp获取hanlp中分词器也有两种方式

    第一种是直接从封装好的hanlp类中获取,这种获取方式一共可以获取五种分词器,而现在默认的就是第一种维特比分词器

    1.维特比 (viterbi):效率和效果的最佳平衡。也是最短路分词,HanLP最短路求解采用Viterbi算法

    2.双数组trie树 (dat):极速词典分词,千万字符每秒(可能无法获取词性,此处取决于你的词典)

    3.条件随机场 (crf):分词、词性标注与命名实体识别精度都较高,适合要求较高的NLP任务

    4.感知机 (perceptron):分词、词性标注与命名实体识别,支持在线学习

    5.N最短路 (nshort):命名实体识别稍微好一些,牺牲了速度

    第二种方式是使用JClass直接获取java类,然后使用。这种方式除了获取上面的五种分词器以外还可以获得一些其他分词器,如NLP分词器,索引分词,快速词典分词等等

    两种使用方式的对比

    第一种是使用作者给的HanLP直接获取分词器,直接segment() 会获取 默认的标准分词器也就是维特比分词器,也**可以使用newSegment函数,传入上面的分词器英文名称来获取新的分词器,如使用HanLP.newSegment("crf")来获取CRF分词器。**第二种方式是使用JClass从java中获取我们想要的类,好在这两种方式都比较方便。除此之外要注意的是,在pyhanlp中还给出了SafeJClass类,其为JClass的线程安全版,你也可以使用SafeClass来代替JClass。不过好在HanLP中的很多类本身已经实现了线程安全,因此许多时候两者是可以相互替代的。

    e624dc57c6d5385845f646ece85ecb12.png

    [你好/vl, ,/w, 欢迎/v, 使用/v, HanLP/nx, 汉语/gi, 处理/vn, 包/v, !/w, 接下来/vl, 请/v, 从/p, 其他/rzv, Demo/nx, 中/f, 体验/v, HanLP/nx, 丰富/a, 的/ude1, 功能/n, ~/nx]

    # 标准分词

    text = (

    "举办纪念活动铭记二战历史,不忘战争带给人类的深重灾难,是为了防止悲剧重演,确保和平永驻;记二战历史,更是为了提醒国际社会,需要共同捍卫二战胜利成果和国际公平正义,必须警惕和抵制在历史认知和维护战后国际秩序问题上的倒行逆施。"

    )

    BasicTokenizer = JClass("com.hankcs.hanlp.tokenizer.BasicTokenizer")

    print(BasicTokenizer.segment(text))

    import time

    start = time.time()

    for i in range(100000):

    HanLP.segment(text)

    cost_time = time.time() - start

    print("HanLP.segment :%.2f字每秒" % (len(text) * 100000 / cost_time))

    start = time.time()

    for i in range(100000):

    BasicTokenizer.segment(text)

    cost_time = time.time() - start

    print("BasicTokenizer.segment :%.2f字每秒" % (len(text) * 100000 / cost_time))

    [举办/v, 纪念活动/nz, 铭记/v, 二战/n, 历史/n, ,/w, 不忘/v, 战争/n, 带给/v, 人类/n, 的/ude1, 深重/a, 灾难/n, ,/w, 是/vshi, 为了/p, 防止/v, 悲剧/n, 重演/v, ,/w, 确保/v, 和平/n, 永驻/nz, ;/w, 记/v, 二战/n, 历史/n, ,/w, 更是/d, 为了/p, 提醒/v, 国际/n, 社会/n, ,/w, 需要/v, 共同/d, 捍卫/v, 二战/n, 胜利/vn, 成果/n, 和/cc, 国际/n, 公平/a, 正义/n, ,/w, 必须/d, 警惕/v, 和/cc, 抵制/v, 在/p, 历史/n, 认知/vn, 和/cc, 维护/v, 战后/t, 国际/n, 秩序/n, 问题/n, 上/f, 的/ude1, 倒行逆施/vl, 。/w]

    HanLP.segment :1518389.32字每秒

    BasicTokenizer.segment :2415039.64字每秒

    仅仅从刚刚的结果看,可能会不太理解为同一个分词器性能差距这么大?难道是因为中间代码的调度问题,其实也不是。将两段代码前后互换之后,发现无论两者怎么排列,总是在前的速度较慢,在后的较快,因此应该是内存的问题,第二次调用时减少了部分内存的调动。所以同一个分词器才会出现,第二次总比第一次快的现象。

    标准分词

    说明

    1.HanLP中有一系列“开箱即用”的静态分词器,以Tokenizer结尾,在接下来的例子中会继续介绍。

    2.HanLP.segment其实是对StandardTokenizer.segment的包装。

    3.分词结果包含词性,每个词性的意思请查阅《HanLP词性标注集》。

    算法详解

    1.《词图的生成》

    单独获取词性或者词语

    如你所见的是,前面print的结果是[词语/词性,词语/词性,/词语/词性…]的形式,那么如果我们只想获取词语,或者词性应该怎么办呢?

    方法也很简单。使用HanLP.Config.ShowTermNature = False修改配置,使其不显示词性即可。

    如果想要只获取词性也是可以的,因为原分词器返回的是Java中的ArrayList属性,list中的每个单元都是一个term类,因此我们也可以通过获取term中的word字段来直接获取词语,或者nature属性,直接获取词性。这一特征,我们在之后也会用到。

    因为HanLP中是默认开启词性标注的,所以在这里我取名为分词与词性标注,但是因为篇幅原因这里没有对词性标注作过多解释,详细内容请看“词性标注(正篇)”

    14319cb2ff434d5adfe8b7129acf6733.png

    作者:Font Tian

    展开全文
  • 词性标注:基于MaxEnt的中文词性标注模型实现

    千次阅读 热门讨论 2018-01-02 10:51:59
    一、前言1、中文词性标注 2、最大熵模型二、数据源本文使用数据源未1988年的人民日报标注语料,手工进行处理,去除一些不符合标注规范(word/pos)的词语,词性标注见中文词性标注一文。三、实战1、特征提取最大熵...

    一、前言

    1、中文词性标注
    2、最大熵模型

    二、数据源

    本文使用数据源未1998年的人民日报标注语料,手工进行处理,去除一些不符合标注规范(word/pos)的词语,词性标注见中文词性标注一文。

    三、实战

    1、特征提取

    最大熵模型与一般机器学习算法不同之处在于特征是对x,y的联合分布提取,而不是只对x进行特征提取。
    这是简单的设定几个模板:

    前一个词与前词词性
    当前词与当前词词性
    后一个词与当前词词性
    前一个词词性与当前词词性
    当前词部首与当前词词性
    

    这里模板数量还是偏少,还可以再增加关于字的模板或者扩大window范围等,详情可以参考后文贴出的论文。
    基于上述的模板,与语料进行匹配,得到输入的特征。

        cls.cal_pre_word_to_pos_feature()
        cls.cal_word_to_pos_feature()
        cls.cal_las_word_to_pos_feature()
        cls.cal_pre_pos_to_pos_feature()
        cls.cal_radical_to_pos_feature()
    

    特征取值这里使用了每一个特征在语料中出现的概率,实验表明,这样的特征取值比单纯的二值方式效果要更好。
    上述提到的特征并不能全部作为输入给到模型训练,需要进行筛选,这里简单的用特征出现的频率阈值作为筛选条件,一般选用5~20都可以。

    @classmethod
    def process_feature(cls, counter, counts, feature_dict_path, feature_path):
        """
        特征筛选、特征值计算及保存 
        """
        limit = int(cls._config.get('postagger', 'feature_limit'))
        feature_dict = {k: {kk: vv/counter[k] for kk, vv in v.items() if vv > limit} for k, v in counts.items()}
        feature_dict = {k: v for k, v in feature_dict.items() if v}
        feature = cls.cal_feature_list(feature_dict)
        cls._feature.save_feature_to_file(feature_dict, feature_dict_path)
        cls._feature.save_feature_to_file(feature, feature_path)
    

    提取出来的特征数量在十万左右,看起来很多,但实际上还是不够的。

    2、语料处理

    前面确定了输入的特征,接下来就是把原始语料转为特征的形式。这里采用tri-gram方式,将语料进行切分。

    @classmethod
    def segment_by_window(cls, words_list=None, window=3):
        """
        窗口切分
        """
        words, pos = [], []
        pre_words = cls._words if not words_list else words_list
        begin, end = 0, window
        for _ in range(1, len(pre_words)):
            if end > len(pre_words): break
            words.append(pre_words[begin:end])
            if not words_list: pos.append(cls._pos[begin:end])
            begin = begin + 1 if words[-1] != u'<EOS>' else begin + window
            end = end + 1 if words[-1] != u'<EOS>' else end + window
        return words, pos
    

    将切分后的语料按模板形式组合,与提取筛选后的特征进行比较,确定输入x的取值形式,构造生成器。

    @classmethod
    def feature_generator(cls):
        """
        语料特征生成器 
        """
        words, pos = cls.segment_by_window()
        batch_size = int(cls._config.get('model', 'batch_size'))
        chunk_size = len(words)/batch_size
        generator_list = [(i*batch_size) - 1 for i in range(chunk_size) if i]
        features = cls.load_feature()
        batch_x, batch_y = [], []
        for index in range(len(words)):
            x = cls.get_batch_x(words, pos, index, features)
            batch_x.append(x)
            batch_y.append(cls._states.index(pos[index][1]))
            if index in generator_list:
                print('{} Feature_size{}, Batch_size:{}, Chunk_count:{}, Now_chunk:{}'.format(
                    datetime.now().strftime('%c'), len(x), batch_size, chunk_size, (index+1)/batch_size))
                yield np.array(batch_x), np.array(batch_y)
                batch_x, batch_y = [], []   
    

    3、模型搭建

    最大熵模型实际上可以看成逻辑回归的一般化形式,或者是多项逻辑回归。前面将语料处理完成后,以一个batch的大小为256计算,大概存在百万级别的训练数据,这样的只能进行增量训练。
    使用的sklearn的SGDClassifier就可以了,需要把损失函数设定为log,这样才是逻辑回归,如下:

        loss : str, 'hinge', 'log', 'modified_huber', 'squared_hinge',\
                'perceptron', or a regression loss: 'squared_loss', 'huber',\
                'epsilon_insensitive', or 'squared_epsilon_insensitive'
        The loss function to be used. Defaults to 'hinge', which gives a
        linear SVM.
        The 'log' loss gives logistic regression, a probabilistic classifier.
        'modified_huber' is another smooth loss that brings tolerance to
        outliers as well as probability estimates.
        'squared_hinge' is like hinge but is quadratically penalized.
        'perceptron' is the linear loss used by the perceptron algorithm.
        The other losses are designed for regression but can be useful in
        classification as well; see SGDRegressor for a description.
    

    模型训练过程中准确率验证码方面,不能使用简单的交叉验证,这里使用了两个准确率对比,简单解释一下,estimator每次只会拿下一个待训练batch在本次做评估,然后训练完之后,再在这个batch上做一次评估,看看是否有优化。

    def train(self, epoch=None, show=None):
        """
        模型训练
        """
        self.initialize_model()
        g = self.corpus.feature_generator()
        batch_first_x, batch_first_y = next(g)
        self.model.partial_fit(batch_first_x, batch_first_y, classes=range(self.classes))
        train_score, progressive_validation_score = [], []
        epoch_count = 0
        for batch_x, batch_y in g:
            score = self.model.score(batch_x, batch_y)
            progressive_validation_score.append(score)
            print('{} Progressive_validation_score:{}'.format(datetime.now().strftime('%c'), score))
            self.model.partial_fit(batch_x, batch_y, classes=range(self.classes))
            score = self.model.score(batch_x, batch_y)
            train_score.append(score)
            print('{} Train_score:{}'.format(datetime.now().strftime('%c'), score))
            if epoch and epoch_count == epoch:break
            else: epoch_count += 1
        self.save_model()
    

    4、模型效果

    参数:

    [model]
    batch_size = 256
    loss = log
    alpha = 0.001
    n_jobs = -1
    

    准确率:

    01/02/18 04:25:28 Feature_size63033, Batch_size:256, Chunk_count:9121, Now_chunk:9120
    01/02/18 04:25:29 Progressive_validation_score:0.6015625
    01/02/18 04:25:31 Train_score:0.6015625
    

    可以看到,到训练完毕时,两个对比准确率趋于稳定,但是都不高,可以判断这里是欠拟合,和上面特征提取时的判断一致,特征数量还是相对较少,需要增加特征模板,将特征数量提升到百万级别。

    5、实例

    from postagger.api import *
    predict = tagger(u'德国  大众  公司  是  欧洲  最  大  的  汽车  制造商  。')
    origin = u'德国/ns  大众/nz  公司/n  是/v  欧洲/ns  最/d  大/a  的/u  汽车/n  制造商/n  。/w'
    print u'Origin', origin
    print u'Predict', predict   
    

    输出如下:

    Origin 德国/ns  大众/nz  公司/n  是/v  欧洲/ns  最/d  大/a  的/u  汽车/n  制造商/n  。/w
    Predict 德国/n  大众/n  公司/n  是/v  欧洲/n  最/d  大/a  的/u  汽车/n  制造商/v  。/w
    

    三、参考

    1、汉语词性标注的特征工程  于江德等
    2、一种基于改进的最大熵模型的汉语词性自动标注的新方法  赵伟等
    3、基于最大熵的哈萨克语词性标注模型  桑海岩等
    
    展开全文
  • 词性标注:中文词性标注简介

    万次阅读 2017-12-25 16:31:04
    词性标注(part-of-speech tagging),又称为词类标注或者简称标注,是指为分词结果中的每个单词标注一个正确的词性的程序,也即确定每个词是名词、动词、形容词或者其他词性的过程。 3、为什么要标注? 词性标注是...

    一、概述

    1、什么是词性?

    词性(part-of-speech)是词汇基本的语法属性,通常也称为词性。

    2、什么是词性标注?

    词性标注(part-of-speech tagging),又称为词类标注或者简称标注,是指为分词结果中的每个单词标注一个正确的词性的程序,也即确定每个词是名词、动词、形容词或者其他词性的过程。

    3、为什么要标注?

    词性标注是很多NLP任务的预处理步骤,如句法分析,经过词性标注后的文本会带来很大的便利性,但也不是不可或缺的步骤。

    4、怎么标注?

    词性标注这里基本可以照搬分词的工作,在汉语中,大多数词语只有一个词性,或者出现频次最高的词性远远高于第二位的词性。据说单纯选取最高频词性,就能实现80%准确率的中文词性标注程序。

    主要可以分为基于规则和基于统计的方法,下面列举几种统计方法:

    (1)基于最大熵的词性标注

    (2)基于统计最大概率输出词性

    (3)基于HMM的词性标注

    5、词性标注的应用?

    (1)句法分析预处理

    (2)词汇获取预处理

    (3)信息抽取预处理

    二、汉语词性对照表

    代码 名称 说明 举例
    a 形容词 取英语形容词adjective的第1个字母 最/d 大/a 的/u
    ad 副形词 直接作状语的形容词.形容词代码a和副词代码d并在一起 一定/d 能够/v 顺利/ad 实现/v 。/w
    ag 形语素 形容词性语素。形容词代码为a,语素代码g前面置以a 喜/v 煞/ag 人/n
    an 名形词 具有名词功能的形容词。形容词代码a和名词代码n并在一起 人民/n 的/u 根本/a 利益/n 和/c 国家/n 的/u 安稳/an 。/w
    b 区别词 取汉字“别”的声母 副/b 书记/n 王/nr 思齐/nr
    c 连词 取英语连词conjunction的第1个字母 全军/n 和/c 武警/n 先进/a 典型/n 代表/n
    d 副词 取adverb的第2个字母,因其第1个字母已用于形容词 两侧/f 台柱/n 上/ 分别/d 雄踞/v 着/u
    dg 副语素  副词性语素。副词代码为d,语素代码g前面置以d 用/v 不/d 甚/dg 流利/a 的/u 中文/nz 主持/v 节目/n 。/w
    e 叹词 取英语叹词exclamation的第1个字母 嗬/e !/w
    f 方位词 取汉字“方” 的声母 从/p 一/m 大/a 堆/q 档案/n 中/f 发现/v 了/u
    g 语素 绝大多数语素都能作为合成词的“词根”,取汉字“根”的声母 例如dg 或ag
    h 前接成分 取英语head的第1个字母 目前/t 各种/r 非/h 合作制/n 的/u 农产品/n
    i 成语 取英语成语idiom的第1个字母 提高/v 农民/n 讨价还价/i 的/u 能力/n 。/w
    j 简称略语 取汉字“简”的声母 民主/ad 选举/v 村委会/j 的/u 工作/vn
    k 后接成分   权责/n 明确/a 的/u 逐级/d 授权/v 制/k
    l 习用语 习用语尚未成为成语,有点“临时性”,取“临”的声母 是/v 建立/v 社会主义/n 市场经济/n 体制/n 的/u 重要/a 组成部分/l 。/w
    m 数词 取英语numeral的第3个字母,n,u已有他用 科学技术/n 是/v 第一/m 生产力/n
    n 名词 取英语名词noun的第1个字母 希望/v 双方/n 在/p 市政/n 规划/vn
    ng 名语素 名词性语素。名词代码为n,语素代码g前面置以n 就此/d 分析/v 时/Ng 认为/v
    nr 人名 名词代码n和“人(ren)”的声母并在一起 建设部/nt 部长/n 侯/nr 捷/nr
    ns 地名 名词代码n和处所词代码s并在一起 北京/ns 经济/n 运行/vn 态势/n 喜人/a
    nt 机构团体 “团”的声母为t,名词代码n和t并在一起 [冶金/n 工业部/n 洛阳/ns 耐火材料/l 研究院/n]nt
    nx 字母专名   ATM/nx 交换机/n
    nz 其他专名 “专”的声母的第1个字母为z,名词代码n和z并在一起 德士古/nz 公司/n
    o 拟声词 取英语拟声词onomatopoeia的第1个字母 汩汩/o 地/u 流/v 出来/v
    p 介词 取英语介词prepositional的第1个字母 往/p 基层/n 跑/v 。/w
    q 量词 取英语quantity的第1个字母 不止/v 一/m 次/q 地/u 听到/v ,/w
    r 代词 取英语代词pronoun的第2个字母,因p已用于介词 有些/r 部门/n
    s 处所词 取英语space的第1个字母 移居/v 海外/s 。/w
    t 时间词 取英语time的第1个字母 当前/t 经济/n 社会/n 情况/n
    tg 时语素 时间词性语素。时间词代码为t,在语素的代码g前面置以t 秋/Tg 冬/tg 连/d 旱/a
    u 助词 取英语助词auxiliary 的第2个字母,因a已用于形容词 工作/vn 的/u 政策/n
    ud 结构助词   有/v 心/n 栽/v 得/ud 梧桐树/n
    ug 时态助词   你/r 想/v 过/ug 没有/v
    uj 结构助词的   迈向/v 充满/v 希望/n 的/uj 新/a 世纪/n
    ul 时态助词了   完成/v 了/ ul
    uv 结构助词地   满怀信心/l 地/uv 开创/v 新/a 的/u 业绩/n
    uz 时态助词着   眼看/v 着/uz
    v 动词   举行/v 老/a 干部/n 迎春/vn 团拜会/n
    vd 副动词   强调/vd 指出/v
    vg 动语素 动词性语素。动词代码为v。在语素的代码g前面置以V 做好/v 尊/vg 干/j 爱/v 兵/n 工作/vn
    vn 名动词  指具有名词功能的动词。动词和名词的代码并在一起 股份制/n 这种/r 企业/n 组织/vn 形式/n ,/w
    w 标点符号   生产/v 的/u 5G/nx 、/w 8G/nx 型/k 燃气/n 热水器/n
    x 非语素字 非语素字只是一个符号,字母x通常用于代表未知数、符号  
    y 语气词 取汉字“语”的声母 已经/d 30/m 多/m 年/q 了/y 。/w
    z 状态词 取汉字“状”的声母的前一个字母 势头/n 依然/z 强劲/a ;/w

    三、参考

     

    1、《统计自然语言处理》   宗成庆
     

    展开全文
  • 该文将SVMTool应用于中文词性标注任务,将基于隐马尔科夫模型的基线系统准确率提升了2.07%。针对未登录词准确率不高的问题,该文加入了中文字、词的特征,包括构成汉字的部首特征和词重叠特征,并从理论上分析了这两个...
  • 安装系统需要安装Java1.6+使用说明标注器有三个模式:标注、训练、测试这里我们用已经训练好的标注模型, 对于中文有两个(model目录下)chinese-distsim.tagger(性能比较好)chinese-nodistsim.tagger二者区别使用java...
  • 目前流行的中文词性标签有两大类:北大词性标注集和宾州词性标注集。现代汉语的词可以分为两类12种词性:一类是实词:名词、动词、形容词、数词、量词和代词;另一类是虚词:副词、介词、连词、助词、叹词和拟声词。...
  • 中文词性标注学习训练算法,绝对可以运行,具有极高的参考价值~
  • 中文词性标注的简单实现

    千次阅读 2017-02-24 21:22:06
    中文词性标注的简单实现
  • 基于HMM的中文词性标注 POSTagging

    千次阅读 多人点赞 2019-12-20 00:33:17
    文章目录1. 词性标注1.1 概念1.2 任务1.3 预处理1.4 初步统计预览2. 最大概率模型2.1 训练2.2 预测...请看专家介绍 中文词性标注简介 1.2 任务 给定 标注文本corpus4pos_tagging.txt,训练一个模型,用模型预测给定...
  • 词性标注 词性标注(part-of-speech tagging),又称为词类标注或者简称标注,是指为分词结果中的每个单词标注一个正确的词性的程序,也即确定每个词是名词、动词、形容词或者其他词性的过程。 词性标注的原因 ...
  • 结束了中文分词工具的安装、使用及在线测试,开启中文词性标注在线测试之旅,一般来说,中文分词工具大多数都附带词性标注功能的,这里测试了之前在AINLP公众号上线的8款中文分词模块或者工具,发现它们都是支持中文...
  • 词性标注(一) 前言 词性标注也被称为语法标注或词类消疑,是语料库语言学中将语料库内单词的词性按其含义和上下文内容进行标记的文本数据处理技术。 词性标注可以由人工或特定算法完成,使用机器学习方法实现...
  • perl实现的中文词性标注 读入按“中国/n 人民/n”方式分好词的文件训练 再读入分词文件测试 输出标好词性的文件
  • 简单感知器实现中文词性标注

    千次阅读 2017-03-02 20:46:08
    简单感知器实现中文词性标注
  • 结束了中文分词工具的安装、使用及在线测试,开启中文词性标注在线测试之旅,一般来说,中文分词工具大多数都附带词性标注功能的,这里测试了之前在AINLP公众号上线的8款中文分词模块或者工具,发现它们都是支持中文...
  • viterbi算法用于中文词性标注 维特比(viterbi)算法与中文词性标注(一)—— 隐含马尔科夫模型 维特比(viterbi)算法与中文词性标注(二)—— 维特比算法 任务简述 中文词性标注是在中文分词器将文本划分为逐个词汇...
  • java实现的中文词性标注算法

    热门讨论 2010-01-15 19:59:27
    java语言实现的关于中文词性标注的问题,在Eclipse上通过编译,可运行。欢迎下载,并提出意见。
  • 中文词性标注 [1]AD副词Adverbs [2]AS语态词--- 了 [3]BA把 [4]CC并列连接词(coordinating conj) [5]CD许多(many),若干(several),个把(a,few) [6]CS从属连接词(subording conj) ...
  • 中文词性标注详解

    千次阅读 2019-09-18 09:12:39
    所谓的词性标注在NLP领域是一个应用非常广泛的技术,总的来说,词性标注所解决的问题就是说,给定一句话 sss,我们将sss进行分词操作,可以将 sss 分成 nnn 个词,那么 sss 可以表示成:s=w1w2...wns = {w_1}{w_2}.....
  • 中文词性标注源码

    热门讨论 2012-08-26 22:30:41
    词性标注源码,我们的源码是用C++来实现的,主要是实现了隐马尔科夫模型和维特比算法。
  • 中文词性标注以及命名实体识别

    千次阅读 2015-11-10 13:46:49
    中文词性标注以及命名实体识别  (2011-02-22 16:49:24) 转载▼ 标签:  it 分类: NLP 目前在中文词性标注(Part-of-speech Tagging)方面做的比较好的有: 哈工大的LTP:...
  • pyhanlp 中文词性标注与分词简介pyhanlp实现的分词器有很多,同时pyhanlp获取hanlp中分词器也有两种方式第一种是直接从封装好的hanlp类中获取,这种获取方式一共可以获取五种分词器,而现在默认的就是第一种维特比分...
  • 本文提出一种基于 CRFs 模型的中文词性标注方法。该方法利用 CRFs 模型能够添加任意特征的优点 ,在使用词的上下文信息的同时 ,针对兼类词和未登录词添加了新 ...
  • 中文词性标注 符号表示

    千次阅读 2013-10-23 20:54:23
    Definitions of Chinese Part-of-Speech ...中文词性标注(33)   [1] AD 副词 Adverbs [2] AS 语态词 --- 了 [3] BA 把 [4] CC 并列连接词(coordinating conj) [5] CD 许多(many)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,343
精华内容 537
关键字:

中文词性标注