中文分詞 基於字標註法的分詞

2021-08-27 16:27:13 字數 2194 閱讀 6463

中文分詞字標註通常有2-tag,4-tag和6-tag這幾種方法,其中4-tag方法最為常用。標註集是依據漢字(其中也有少量的非漢字字元)在漢語詞中的位置設計的。

1. 2-tag法

2-tag是一種最簡單的標註方法,標註集合為,其將詞首標記設計為b,而將詞的其他位置標記設計為i。例如詞語「重慶」的標註結果是「重/b 慶/i」,而「大學生」的標註結果為「大/b 學/i 生/i」

對於以下句子

邁向 充滿 希望 的 新 世紀 —— 一九九八年 新年 講話

使用2-tag(b,i)的標註結果為

邁/b向/i 充/b滿/i 希/b望/i 的/b 新/b 世/b紀/i —/b—/i 一/b九/i九/i八/i年/i 新/b年/i 講/b話/i

2.4-tag法

4-tag標註集合為,s表示單字為詞,b表示詞的首字,m表示詞的中間字,e表示詞的結尾字。對於以下句子

邁向 充滿 希望 的 新 世紀 —— 一九九八年 新年 講話

使用4-tag(s,b,m,e)的標註結果為

邁/b向/e 充/b滿/e 希/b望/e 的/s 新/s 世/b紀/e —/b—/e 一/b九/m九/m八/m年/e 新/b年/e 講/b話/e

參考我愛自然語言處理部落格, python實現方法為

import codecs

import sys

def character_tagging(input_file, output_file):

input_data = codecs.open(input_file, 'r', 'utf-8')

output_data = codecs.open(output_file, 'w', 'utf-8')

forline

in input_data.readlines():

word_list = line.strip().split()

forword

in word_list:

iflen(word) == 1:

output_data.write(word + "\ts\n")

else:

output_data.write(word[0] + "\tb\n")

for w in

word[1:len(word)-1]:

output_data.write(w + "\tm\n")

output_data.write(word[len(word)-1] + "\te\n")

output_data.write("\n")

input_data.close()

output_data.close()

if __name__ == '__main__':

#if len(sys.argv) != 3:

#sys.exit()

input_file = 'c:/users/asus/desktop/icwb2-data/training/pku_training.utf8'

output_file = 'c:/users/asus/desktop/icwb2-data/training/pku_training.tagging2.utf8'

# output_file = sys.argv[1]

# output_file = sys.argv[2]

character_tagging(input_file, output_file)

本文使用 pku語料庫,其原始格式為

標註後的結果為

3.6-tag法

6-tag標註集合為,s表示單字為詞,b表示詞的首字,m1/m2/m表示詞的中間字,e表示詞的結尾字。例如「大學生」可以標註為「大/b 學/m 生/e」 。

「中華人民共和國」就可以標註為

中/b 華/m1 人/m2 民/m 共/m 和/m 國/e
參考資料:

中文分詞與詞性標註

概況介紹 中文分詞與詞性標註是自然語言處理的第乙個階段,是上層處理的基礎。分詞的主要研究內容是歧義切分和未登入詞識別。歧義切分是指對同乙個文字片斷具有不同的切分方式,如 結合成分子 這句話就有好幾種切分方法,但是正確的只有一種,能正確的進行歧義切分是分詞的乙個難點。分詞的另乙個難點是未登入詞識別,未...

基於規則的中文分詞

正向最大匹配 maximum match method,mm法 的基本思想為 假定分詞詞典中的最長詞有i個漢字字元,則用被處理文件的當前字串中的前i個字作為匹配字段,查詢字典。若字典中存在這樣的乙個i字詞,則匹配成功,匹配欄位被作為乙個詞切分出來。如果詞典中找不到這樣的乙個i字詞,則匹配失敗,將匹配...

基於詞表的中文分詞演算法

對於輸入的一段文字從左至右,以貪心的方式切分出當前位置上長度最大的詞.正向最大匹配法是基於詞典的分詞方法,其分詞原理是 單詞的顆粒度越大,所能表示的含義越確切.該演算法主要分兩個步驟 一般從乙個字串的開始位置,選擇乙個最大長度的詞長的片段,如果序列不足最大詞長,則選擇全部序列.首先看該片段是否在詞典...