对Zemberek GRPC服务器的请求
zemberek-grpc的Python项目详细描述
泽姆贝雷克gRPC
最新版本0.16.0
zemberek nlp通过一个称为grpc的远程过程调用框架提供了一些功能。grpc是一个高性能、开源的通用rpc框架。一旦Zemberek NLP gRPC服务器启动,其他应用程序就可以通过自动生成的客户端库本地访问远程服务
https://github.com/ahmetaa/zemberek-nlp
用docker启动gRPC服务器
您可以直接在计算机中使用它,也可以在Docker容器中与一起运行。
https://hub.docker.com/r/ryts/zemberek-grpc
与Docker一起运行
docker run -d --rm -p 6789:6789 --name zemberek-grpc ryts/zemberek-grpc
检查日志
docker logs -f zemberek-grpc
安装库和示例
pip install zemberek-grpc
Python客户端示例
#!/usr/bin/env python# -*- coding: utf-8 -*-importsysimportgrpcimportzemberek_grpc.language_id_pb2asz_langidimportzemberek_grpc.language_id_pb2_grpcasz_langid_gimportzemberek_grpc.normalization_pb2asz_normalizationimportzemberek_grpc.normalization_pb2_grpcasz_normalization_gimportzemberek_grpc.preprocess_pb2asz_preprocessimportzemberek_grpc.preprocess_pb2_grpcasz_preprocess_gimportzemberek_grpc.morphology_pb2asz_morphologyimportzemberek_grpc.morphology_pb2_grpcasz_morphology_gchannel=grpc.insecure_channel('localhost:6789')langid_stub=z_langid_g.LanguageIdServiceStub(channel)normalization_stub=z_normalization_g.NormalizationServiceStub(channel)preprocess_stub=z_preprocess_g.PreprocessingServiceStub(channel)morphology_stub=z_morphology_g.MorphologyServiceStub(channel)deffind_lang_id(i):response=langid_stub.Detect(z_langid.LanguageIdRequest(input=i))returnresponse.langIddeftokenize(i):response=preprocess_stub.Tokenize(z_preprocess.TokenizationRequest(input=i))returnresponse.tokensdefnormalize(i):response=normalization_stub.Normalize(z_normalization.NormalizationRequest(input=i))returnresponsedefanalyze(i):response=morphology_stub.AnalyzeSentence(z_morphology.SentenceAnalysisRequest(input=i))returnresponse;deffix_decode(text):"""Pass decode."""ifsys.version_info<(3,0):returntext.decode('utf-8')else:returntextdefrun():lang_detect_input='merhaba dünya'lang_id=find_lang_id(lang_detect_input)print("Language of ["+fix_decode(lang_detect_input)+"] is: "+lang_id)print("")tokenization_input='Merhaba dünya!'print('Tokens for input : '+fix_decode(tokenization_input))tokens=tokenize(tokenization_input)fortintokens:print(t.token+':'+t.type)print("")normalization_input='Mrhaba dnya'print('Normalization result for input : '+fix_decode(normalization_input))n_response=normalize(normalization_input)ifn_response.normalized_input:print(n_response.normalized_input)else:print('Problem normalizing input : '+n_response.error)print("")analysis_input='Kavanozun kapağını açamadım.'print('Analysis result for input : '+fix_decode(analysis_input))analysis_result=analyze(analysis_input)forainanalysis_result.results:best=a.bestlemmas=""forlinbest.lemmas:lemmas=lemmas+" "+lprint("Word = "+a.token+", Lemmas = "+lemmas+", POS = ["+best.pos+"], Full Analysis = {"+best.analysis+"}")if__name__=='__main__':run()