Package: wordrank
wordrankWord Rank(term weighting), calculate context-aware bag-of-words term weights for documents and queries.wordrank基于特征工程的词重要度分析工具，支持词权重打分、词干提取等query分析，扩展性强，开箱即用。GuideFeatureEvaluationInstallUsageContactReferenceFeature如何计算query中各word的权重呢？思路特征工程的解决思路实现时采用模型打分方法，以搜索query为原始语料，人工标注句子中各词重要度重要度共分4级：Super important：主要包括POI核心词，比如“方特、欢乐谷”Required：包括行政区词、品类词等，比如“北京 温泉”中“北京”和“温泉”都很重要Important：包括品类词、门票等，比如“顺景 温泉”中“温泉”相对没有那么重要，用户搜“顺景”大部分都是温泉的需求Unimportant：包括语气词、代词、泛需求词、停用词等上例中可见“温泉”在不同的query中重要度是不同的。模型方面采用树模型（XGBoost等）进行训练，得到权重分类模型后在线上预测深度模型的解决思路利用深度学习模型来学习term重要性，比如通过训练基于BiLSTM+Attention的query意图分类模型基于Seq2Seq/Transformer训练的query翻译改写模型得到的attention权重副产物再结合其他策略或作为上述分类回归模型的特征也可以用于衡量term的重要性利用BERT模型训练端到端的词分级模型，类似序列标注模型，后接CRF判定词重要性权重输出解决方法特征方法文本特征：包括Query长度、Term长度，Term在Query中的偏移量，term词性、长度信息、term数目、位置信息、句法依存tag、是否数字、是否英文、是否停用词、是否专名实体、是否重要行业词、embedding模长、删词差异度、以及短语生成树得到term权重等统计特征：包括PMI、IDF、textrank值、前后词互信息、左右邻熵、独立检索占比（term单独作为query的qv/所有包含term的query的qv和）、统计概率、idf变种iqf语言模型特征：整个query的语言模型概率 / 去掉该Term后的Query的语言模型概率深度模型BERT CLS + classificationSeq2Seq + AttentionEvaluationModelDatasetQPSTextRank--TFIDF--WordRank--结果值使用F1InstallFrom pip:pip3install-UwordrankFrom source：gitclonehttps://github.com/shibing624/wordrank.gitcdwordrank
python3setup.pyinstall依赖库pip3install-Upycorrector主要包括以下Python包：pycorrectortext2vec(optional)依赖数据千兆中文文本训练的语言模型zh_giga.no_cna_cmn.prune01244.klm(2.8G)，模型由pycorrector库自动下载于：~/.pycorrector/datasets/zh_giga.no_cna_cmn.prune01244.klm 。中文文本匹配模型shibing624/text2vec-base-chinese，模型由transformers库自动下载于：~/.cache/huggingface/transformers/ 下。Usage词权重计算importwordrankq='哪里下载电视剧周恩来？'r=wordrank.rank(q)print(r)output:[('哪里','1'),('下载','3'),('电视剧','3'),('周恩来','1'),('？',0)]3：核心词；2：限定词；1：可省略词；0：干扰词。模型训练和预测训练：cdexamples
pythontrain.py预测：cdexamples
pythoninfer.py命令行使用示例： python -m wordrank预测文本井冈山景点介绍的词重要度命令行选项（训练领域模型）：使用: python -m wordrank --train

如果没有指定训练文件，则使用默认训练样本`extra_data/train.csv`。--help选项输出：$>python-mwordrank--help

usage:__main__.py[-h][--train][--train_fileTRAIN_FILE][--col_sepCOL_SEP][--segment_sepSEGMENT_SEP][--stopwords_pathSTOPWORDS_PATH][--person_name_pathPERSON_NAME_PATH][--place_name_pathPLACE_NAME_PATH][--common_char_pathCOMMON_CHAR_PATH][--domain_sample_pathDOMAIN_SAMPLE_PATH][--ngramNGRAM][--pmi_pathPMI_PATH][--entropy_pathENTROPY_PATH][--model_pathMODEL_PATH][--queryQUERY]optionalarguments:-h,--helpshowthishelpmessageandexit--traintrainorpredict--train_fileTRAIN_FILEtrainfile,fileencodeutf-8.--col_sepCOL_SEPcolumnsep--segment_sepSEGMENT_SEPsegment_sep--stopwords_pathSTOPWORDS_PATHstopwordfile--person_name_pathPERSON_NAME_PATHpersonnamefile--place_name_pathPLACE_NAME_PATHplacenamefile--common_char_pathCOMMON_CHAR_PATHcommon_char_path--domain_sample_pathDOMAIN_SAMPLE_PATHdomain_sample_path--ngramNGRAMcommon_char_path--pmi_pathPMI_PATHpmi_path--entropy_pathENTROPY_PATHentropy_path--model_pathMODEL_PATHmodelfilepathtosave--queryQUERYinputquery延迟加载机制wordrank 采用延迟加载，import wordrank和from wordrank import WordRank不会立即触发词典及模型的加载，一旦有必要才开始加载词典。
如果你想手工初始wordrank，也可以手动初始化。fromwordrankimportWordRankmodel=WordRank()model.check_inited()# 手动初始化（可选）你可以改变主模型的路径:fromwordrankimportWordRankmodel=WordRank(model_path='/your/model/path')model.check_inited()ContactIssue(建议)：邮件我：xuming:xuming624@qq.com微信我：加我微信号：xuming624, 进Python-NLP交流群，备注：姓名-公司名-NLPCitation如果你在研究中使用了wordrank，请按如下格式引用：@software{wordrank,
  author ={Xu Ming},
  title ={wordrank: A Tool for query term weighting},
  year ={2021},
  url ={https://github.com/shibing624/wordrank},}License授权协议为The Apache License 2.0，可免费用做商业用途。请在产品说明中附加wordrank的链接和授权协议。Contribute项目代码还很粗糙，如果大家对代码有所改进，欢迎提交回本项目，在提交之前，注意以下两点：在tests添加相应的单元测试使用python setup.py test来运行所有单元测试，确保所有单测都是通过的之后即可提交PR。ReferenceContext-Aware Document Term Weighting for Ad-Hoc Searchterm weightingDeepCT