class blog9 Django实现中文分词
Posted 智趣智学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了class blog9 Django实现中文分词相关的知识,希望对你有一定的参考价值。
Django实现中文分词搜索
1安装库pip install jieba
2再post应用包下创建tokenizer.py文件
3将下面固定工具包函数粘贴到tokenizer.py里:
#coding=utf-8
#中文分词解释器
import jieba
from whoosh.analysis import Tokenizer, Token
class ChineseTokenizer(Tokenizer):
def __call__(self, value, positions=False, chars=False,
keeporiginal=False, removestops=True,
start_pos=0, start_char=0, mode='', **kwargs):
t = Token(positions, chars, removestops=removestops, mode=mode,
**kwargs)
seglist = jieba.cut(value, cut_all=False) # (精确模式)使用结巴分词库进行分词
# seglist = jieba.cut_for_search(value) #(搜索引擎模式) 使用结巴分词库进行分词
for w in seglist:
print(w)
t.original = t.text = w
t.boost = 1.0
if positions:
t.pos = start_pos + value.find(w)
if chars:
t.startchar = start_char + value.find(w)
t.endchar = start_char + value.find(w) + len(w)
yield t # 通过生成器返回每个分词的结果token
def ChineseAnalyzer():
return ChineseTokenizer()
4在项目目录中D:\PycharmProjects\tianjinwuliu\venv\Lib\site-packages\haystack\backends拷贝文件whoosh_backend.py至应用post目录下,并改名为whoosh_cn_backend.py
5编写post应用包下面的whoosh_cn_backend.py文件中把搜索模式改为我们自定义的名称:
方法:ctrl+f搜索'bild_schema',找到def build_schema(self, fields): 方法里面的最后一天else语句,修改分析器默认值analyzer=StemmingAnalyzer为我们工具包中定义的值:analyzer=ChineseAnalyzer()
5把setting中默认使用的引擎改为我们自定义的这个引擎:
HAYSTACK_CONNECTIONS = { 'default':{ #'ENGINE':'haystack.backends.whoosh_backend.WhooshEngine', 'ENGINE':'post.whoosh_cn_backend.WhooshEngine', 'PATH':os.path.join(BASE_DIR,'whoosh_index'), },}
6打开终端重新生成索引文件:
python manage.py rebuild_index
以上是关于class blog9 Django实现中文分词的主要内容,如果未能解决你的问题,请参考以下文章