C++調用python的結巴例子(二)

目前,我需要這樣一個功能:需要使用C++的代碼調用python中的結巴分詞。

在此處,我使用的python是win32版本的。

第一步:從官網上下載win32版本的python。進行安裝

第二步:獲取安裝的python的位置。

在doc窗口下,輸入以下命令,可以查詢到python的安裝路徑

python
import sys
print(sys.executable)

路徑顯示:

          C:\Users\admn\AppData\Local\Programs\Python\Python35\python.exe

第三步:根據python安裝路徑獲取頭文件,dll,lib

1:頭文件

採用有"Python.h"的頭文件的文件夾,放到當前你的項目中

2:dll,lib使用

**因爲python的dll和lib只有release版本下的,所以需要自己複製一份,重新命名成debug版本的。

因此,就有以下兩個dll

python35_d.dll           python35.dll

lib庫一樣

python35_d.lib            python35.lib

第四步:寫jieba.py代碼

import jieba
import jieba.posseg as pseg
'''
    對一句話進行分詞,全模式
'''
def cutstring_QuanMode(str):
    seg_list = jieba.cut(str , cut_all = True)
    str_result= " ".join(seg_list)
    return str_result

'''
    對一句話分詞,精準模式,默認就是精準模式
'''
def cutstring_JingZhunMode(str):
    seg_list = jieba.cut(str , cut_all = False)
    str_result= " ".join(seg_list)
    return str_result

'''
    對一句話分詞,搜索引擎模式
'''
def  cutstring_SearchMode(str):
    seg_list = jieba.cut_for_search(str)
    str_result= " ".join(seg_list)
    return str_resul


'''
    添加用戶自定義的詞典
    詞典格式:一行一詞,每行三個部分。用空格隔開
    詞語 詞頻(可省略) 詞性(可省略)
'''
def addUserDict(dictName):
    jieba.load_userdict(dictName)
    

'''
    顯示一句話的詞性
'''
def cutstringWordPart(str):
    seg_list = pseg.cut(str)
    print('seg_list = ',seg_list)
    cutText = ''
    for word,flag in seg_list:
        cutText += word + flag
        print('%s %s' %(word,flag))
    print('cutText = ',cutText)

'''
if __name__ == "__main__":
    Text = '真是好久好久沒來哈皮娜拉野生動物園了,記憶裏還是小時候三四年級學校組織春遊去的銀河系'
    #添加自定義詞典
    addUserDict('UserDict.txt')
    
    strText = cutstring_JingZhunMode(Text)
    print('strText = ', strText)
    
    cutstringWordPart(Text)
'''

當前給出的代碼,取消 main函數的註釋,可以直接運行。但必須要有UserDict.txt自定義詞典纔可以。

使用python編譯工具運行時,發現了以下問題

有用紅線標註的內容,說明:在使用結巴分詞時,需要加載jieba.cache這個文件。如果沒有當前這個文件是運行不成功的。

這個我已經測試過。

 

第五步:使用C++程序進行調用

和例子(一)的方式一致。在此,我就不進行細緻的寫了,如有需要可以看例子(一)

在使用C++調用python的結巴分詞時,一般都是用中文進行分詞。

在此,就會有一個問題:傳入的參數是應該用什麼格式傳入?用什麼格式接收?

我會在下面文章中進行詳細解說。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章