<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          cppjieba"結(jié)巴"中文分詞的C++版本

          聯(lián)合創(chuàng)作 · 2023-09-29 05:17

          簡介

          CppJieba是"結(jié)巴"中文分詞的C++版本

          代碼細(xì)節(jié)詳解請見 代碼詳解

          特性

          • 源代碼都寫進(jìn)頭文件src/*.hpp里,include即可使用。

          • 支持utf-8, gbk編碼,但是推薦使用utf-8編碼, 因?yàn)間bk編碼缺少嚴(yán)格測試,慎用。

          • 內(nèi)置分詞服務(wù)server/server.cpp,在linux環(huán)境下可安裝使用。

          • 項(xiàng)目自帶較為完善的單元測試,核心功能中文分詞(utf8)的穩(wěn)定性接受過線上環(huán)境檢驗(yàn)。

          • 支持載自定義用戶詞典。

          • 支持 linux , mac osx 操作系統(tǒng)。

          • 支持 Docker。

          用法

          依賴軟件

          • g++ (version >= 4.1 recommended) or clang++;

          • cmake (version >= 2.6 recommended);

          下載和編譯

          git clone --depth=10 --branch=master git://github.com/aszxqw/cppjieba.git cd cppjieba
          mkdir build cd build
          cmake ..
          make

          有興趣的可以跑跑測試(可選):

          ./test/test.run
          ./load_test

          演示

          ./segment.demo

          詳細(xì)請看 test/segment_demo.cpp.

          服務(wù)使用

          啟動(dòng)服務(wù)

          ./bin/cjserver ../test/testdata/server.conf

          客戶端請求示例

          curl "http://127.0.0.1:11200/?key=南京市長江大橋"
          ["南京市", "長江大橋"]
          curl "http://127.0.0.1:11200/?key=南京市長江大橋&format=simple"
          南京市 長江大橋

          用 chrome 瀏覽器打開也行 ( chrome 設(shè)置默認(rèn)編碼是utf-8):

          同時(shí),也支持HTTP POST模式,使用如下調(diào)用:

          curl -d "南京市長江大橋" "http://127.0.0.1:11200/"

          返回結(jié)果如下:

          ["南京市", "長江大橋"]

          如果有需要安裝使用的,可以按照如下操作:

          安裝服務(wù)

          sudo make install

          服務(wù)啟動(dòng)和停止(僅限 linux 系統(tǒng))

          /etc/init.d/cjserver.start >> /dev/null 2>&1
          /etc/init.d/cjserver.stop

          卸載服務(wù)(僅限 linux 系統(tǒng))

          cd build/
          cat install_manifest.txt | sudo xargs rm -rf

          Docker 示例

          安裝和啟動(dòng)

          sudo docker pull yanyiwu/cppjieba
          sudo docker run -d -P yanyiwu/cppjieba
          sudo docker ps
          CONTAINER IDIMAGE COMMANDCREATED STATUS  PORTS  NAMES
          7c29325e9c20yanyiwu/cppjieba:latest   "./bin/cjserver ../t   4 minutes ago   Up 4 minutes0.0.0.0:49160->11200/tcp   angry_wilson

          可以看到正在運(yùn)行的 Docker 容器(容器內(nèi)運(yùn)行著 cjserver 服務(wù)),并且服務(wù)的端口號被映射為 0.0.0.0:49160 。

          所以現(xiàn)在可以來一發(fā)測試了:

          curl "http://0.0.0.0:49160/?key=南京市長江大橋"

          預(yù)期結(jié)果如下:

          ["南京市", "長江大橋"]

          分詞結(jié)果示例

          MPSegment

          Output:

          我來到北京清華大學(xué)
          我/來到/北京/清華大學(xué)
          
          他來到了網(wǎng)易杭研大廈
          他/來到/了/網(wǎng)易/杭/研/大廈
          
          小明碩士畢業(yè)于中國科學(xué)院計(jì)算所,后在日本京都大學(xué)深造
          小/明/碩士/畢業(yè)/于/中國科學(xué)院/計(jì)算所/,/后/在/日本京都大學(xué)/深造

          HMMSegment

          我來到北京清華大學(xué)
          我來/到/北京/清華大學(xué)
          
          他來到了網(wǎng)易杭研大廈
          他來/到/了/網(wǎng)易/杭/研大廈
          
          小明碩士畢業(yè)于中國科學(xué)院計(jì)算所,后在日本京都大學(xué)深造
          小明/碩士/畢業(yè)于/中國/科學(xué)院/計(jì)算所/,/后/在/日/本/京/都/大/學(xué)/深/造

          MixSegment

          我來到北京清華大學(xué)
          我/來到/北京/清華大學(xué)
          
          他來到了網(wǎng)易杭研大廈
          他/來到/了/網(wǎng)易/杭研/大廈
          
          小明碩士畢業(yè)于中國科學(xué)院計(jì)算所,后在日本京都大學(xué)深造
          小明/碩士/畢業(yè)/于/中國科學(xué)院/計(jì)算所/,/后/在/日本京都大學(xué)/深造

          FullSegment

          我來到北京清華大學(xué)
          我/來到/北京/清華/清華大學(xué)/華大/大學(xué)
          
          他來到了網(wǎng)易杭研大廈
          他/來到/了/網(wǎng)易/杭/研/大廈
          
          小明碩士畢業(yè)于中國科學(xué)院計(jì)算所,后在日本京都大學(xué)深造
          小/明/碩士/畢業(yè)/于/中國/中國科學(xué)院/科學(xué)/科學(xué)院/學(xué)院/計(jì)算/計(jì)算所/,/后/在/日本/日本京都大學(xué)/京都/京都大學(xué)/大學(xué)/深造

          QuerySegment

          我來到北京清華大學(xué)
          我/來到/北京/清華/清華大學(xué)/華大/大學(xué)
          
          他來到了網(wǎng)易杭研大廈
          他/來到/了/網(wǎng)易/杭研/大廈
          
          小明碩士畢業(yè)于中國科學(xué)院計(jì)算所,后在日本京都大學(xué)深造
          小明/碩士/畢業(yè)/于/中國/中國科學(xué)院/科學(xué)/科學(xué)院/學(xué)院/計(jì)算所/,/后/在/中國/中國科學(xué)院/科學(xué)/科學(xué)院/學(xué)院/日本/日本京都大學(xué)/京都/京都大學(xué)/大學(xué)/深造

          以上依次是MP,HMM,Mix三種方法的效果。

          可以看出效果最好的是Mix,也就是融合MP和HMM的切詞算法。即可以準(zhǔn)確切出詞典已有的詞,又可以切出像"杭研"這樣的未登錄詞。

          Full方法切出所有字典里的詞語。

          Query方法先使用Mix方法切詞,對于切出來的較長的詞再使用Full方法。

          自定義用戶詞典

          自定義詞典示例請看test/testdata/userdict.utf8。

          載入自定義詞典示例請看test/segment.cpp,產(chǎn)生的可執(zhí)行文件示例請見 build/segment.demo

          沒有使用自定義用戶詞典時(shí)的結(jié)果:

          令狐沖/是/云/計(jì)算/行業(yè)/的/專家

          使用自定義用戶詞典時(shí)的結(jié)果:

          令狐沖/是/云計(jì)算/行業(yè)/的/專家

          關(guān)鍵詞抽取

          make && ./keyword.demo

          你將看到如下結(jié)果:

          我是拖拉機(jī)學(xué)院手扶拖拉機(jī)專業(yè)的。不用多久,我就會升職加薪,當(dāng)上CEO,走上人生巔峰。
          ["CEO:11.7392", "升職:10.8562", "加薪:10.6426", "手扶拖拉機(jī):10.0089", "巔峰:9.49396"]

          詳細(xì)請見 test/keyword_demo.cpp.

          詞性標(biāo)注

          ./tagging.demo

          詳情請看 test/tagging_demo.cpp.

          ["我:r", "是:v", "藍(lán)翔:x", "技工:n", "拖拉機(jī):n", "學(xué)院:n", "手扶拖拉機(jī):n", "專業(yè):n", "的:uj", "。:x", "不用:v", "多久:m", ",:x", "我:r", "就:d", "會:v", "升職:v", "加薪:nr", ",:x", "當(dāng):t", "上:f", "總經(jīng)理:n", ",:x", "出任:v", "CEO:eng", ",:x", "迎娶:v", "白富美:x", ",:x", "走上:v", "人生:n", "巔峰:n", "。:x"]

          支持自定義詞性。 比如在(dict/user.dict.utf8)增加一行

          藍(lán)翔 nz

          結(jié)果如下:

          ["我:r", "是:v", "藍(lán)翔:nz", "技工:n", "拖拉機(jī):n", "學(xué)院:n", "手扶拖拉機(jī):n", "專業(yè):n", "的:uj", "。:x", "不用:v", "多久:m", ",:x", "我:r", "就:d", "會:v", "升職:v", "加薪:nr", ",:x", "當(dāng):t", "上:f", "總經(jīng)理:n", ",:x", "出任:v", "CEO:eng", ",:x", "迎娶:v", "白富美:x", ",:x", "走上:v", "人生:n", "巔峰:n", "。:x"]

          其它詞典資料分享

          應(yīng)用

          關(guān)于CppJieba的跨語言包裝使用

          收到郵件詢問跨語言包裝(ios應(yīng)用開發(fā))使用的問題,這方面我沒有相關(guān)的經(jīng)驗(yàn),建議參考如下python使用cppjieba的項(xiàng)目:

          jannson 開發(fā)的供 python模塊調(diào)用的項(xiàng)目 cppjiebapy , 和相關(guān)討論 cppjiebapy_discussion .

          NodeJieba

          如果有需要在node.js中使用分詞,不妨試一下NodeJieba

          simhash

          如果有需要在處理中文文檔的的相似度計(jì)算,不妨試一下simhash。

          exjieba

          如果有需要在erlang中使用分詞的話,不妨試一下exjieba。

          jiebaR

          如果有需要在R中使用分詞的話,不妨試一下jiebaR。

          libcppjieba

          libcppjieba 是最簡單易懂的CppJieba頭文件庫使用示例。

          keyword_server

          KeywordServer 50行搭建一個(gè)中文關(guān)鍵詞抽取服務(wù)。

          ngx_http_cppjieba_module

          如果有需要在Nginx中使用分詞模塊的話,不妨試一下ngx_http_cppjieba_module.

          線上演示

          http://cppjieba-webdemo.herokuapp.com/ (建議使用chrome打開)

          客服

          [email protected]

          鳴謝

          "結(jié)巴"中文分詞作者: @SunJunyi

          瀏覽 39
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青青草乱伦视频免费播放 | 干视频在线 | 卡一卡二久久 | 久久久三级 | 嗯啊日韩 |