生成拼音語料及拼音識別轉換成中文

2021-10-24 21:13:36 字數 2833 閱讀 7480

前兩篇文章分別介紹了利用中文拼音庫生成基於trie樹的音節模型和將輸入的字串進行音節拆分,本篇文章主要介紹如何利用中文語料構建拼音語料模型及拼音轉換中文.

先來看看拼音轉中文效果,輸入字串"zhuanye",

列印print(pinyin2chinese().covert(『zhuanye』))

思路:獲取中文語料(**可以從資料庫或者靜態檔案,包括excel表和.txt表),然後將語料結巴進行分詞,然後利用pypinyin工具將分詞轉換成拼音,用列表儲存,最後寫出二進位制檔案儲存拼音語料,下列**僅做個示例,具體操作看自身情況.

proj_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

pinyin_model_path = os.path.join(proj_path, "main/pinyindict.model")

categoryexcle_path = os.path.join(proj_path, "main/category_data.xls")

class load_dump_model:

def __init__(self):

# 從資料庫表中獲取資料

self.tenant_name = 'test'

self.category_data = self.load_sql_data()

# 從excel表中獲取資料

# self.excle = categoryexcle_path

# self.category_data = self.load_excle_data(self.excle)

def load_excle_data(self, path):

xl = xlrd.open_workbook(path)

table = xl.sheet_by_index(0)

col = table.col_values(0)

print(col[1:])

return col[1:]

def load_sql_data(self):

result =

departments = db.session.query(faq.department_name).filter(

faq.tenant_name == self.tenant_name).group_by(faq.department_name).all()

categories = db.session.query(faq.category_name).filter(

faq.tenant_name == self.tenant_name).group_by(faq.category_name).all()

for i in departments:

for j in categories:

return result

def load_pinyin_model(self):

pinyin_dict = {}

# 獲取資料

for ele in self.category_data:

pinyin = ','.join(lazy_pinyin(ele))

pinyin_dict[pinyin] = ele

for j in jieba.lcut(ele):

pinyin2 = ','.join(lazy_pinyin(j))

pinyin_dict[pinyin2] = j

# 儲存模self.category_data型 使用pickle和檔案流方式

fp = open(os.path.join(devconfig.proj_path, 'main/assets/dataset/pinyindict.model'), 'wb')

pickle.dump(pinyin_dict, fp)

fp.close()

思路:加提出載並獲取拼音語料模型,然後將字串進行音節切分,最後遍歷拼音語料比對返回中文,如果匹配不上則無結果返回.

**如下:

class pinyin2chinese:

def __init__(self):

self.model_path = pinyin_model_path

self.pinyin2word = self.load_py2w_model(self.model_path)

# self.pinyin2word=load_dump_model().load_pinyin_model()

def load_py2w_model(self, model_path):

fp = open(model_path, 'rb')

data = pickle.load(fp)

fp.close()

return data

def covert(self, pinyin):

pinyin = pinyincut().cut(pinyin)

for key, value in self.pinyin2word.items():

if pinyin == key:

# result = sorted(value.items(), key=lambda x: x[1], reverse=true)[0][0]

return value

else:

continue

error = false

return error

漢字轉換成拼音

c 乙個有用的漢字轉拼音類 c 漢字轉換為拼音的類,含大小寫轉換 因為是靜態函式 呼叫方法很簡單 crazycoderpinyin.convert 瘋狂 如下 using system using system.collections.generic using system.text using ...

中文轉換成拼音

利用微軟的microsoft.pinyinconverter能夠查詢出單個漢字的讀音,然後利用這個類通過排列組合就能得出詞語中有多音情況下的集合。得到首字母 中文文字 中文文字的拼音首字母 public static string getinitials string text string isn...

PHP 中文轉換成拼音

encode方法中傳進兩個引數,utf8data,sretformat,第乙個引數為傳入的中文,字元編碼為utf 8,如果不是這個編碼要轉換成utf 8,第二個引數head 首字母 all 全拼音,返回值為轉換後的拼音 class utf8topinyin if ichr 160 ichr ichr...