首先在/usr/local/ltp下放置一個詞典,我為了測試就叫userdict.txt ,里面有三個詞:
解空間
深度優先
根節點
先測試加入自定義詞典時的效果:
py@ubuntu:/usr/local/ltp$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> import os
>>> from pyltp import Segmentor
>>> reload(sys)
<module 'sys' (built-in)>
>>> sys.setdefaultencoding('utf-8')
>>> model_path = "/usr/local/ltp/cws.model"
>>> user_dict = "/usr/local/ltp/userdict.txt"
>>> segmentor = Segmentor()
>>> segmentor.load_with_lexicon(model_path, user_dict)
[INFO] 2017-09-04 23:23:24 loaded 3 lexicon entries
>>> sent = "在包含問題的所有解的解空間樹中,按照深度優先搜索的策略,從根節點出發深度探索 解空間樹。"
>>> words = segmentor.segment(sent)
>>> print '\t'.join(words)
在 包含 問題 的 所有 解 的 解空間 樹 中 , 按照 深度優先 搜索 的 策略 , 從 根節點 出發 深度 探索 解空間 樹 。
沒加自定義詞典時的效果:
py@ubuntu:/usr/local/ltp$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> import os
>>> reload(sys)
<module 'sys' (built-in)>
>>> sys.setdefaultencoding('utf-8')
>>> model_path = "/usr/local/ltp/cws.model"
>>> segmentor = Segmentor()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Segmentor' is not defined
>>> from pyltp import Segmentor
>>> segmentor = Segmentor()
>>> segmentor.load(model_path)
>>> words = segmentor.segment("在包含問題的所有解的解空間樹中,按照深度優先搜索的策略,從根節點出發深度探索 解空間樹。")
>>> print '\t'.join(words)
在 包含 問題 的 所有 解 的 解 空間 樹 中 , 按照 深度 優先 搜索 的 策略 , 從 根節點 出發 深度 探索 解 空間 樹 。
從結果看加與不加自定義詞典是顯而易見的。
