<jupyter_start><jupyter_text>Question检索 -- 丰富短句信息---<jupyter_code>import os
import re
from tqdm import tqdm
import traceback
import random
import sys
import pprint
import jieba

sys.path.insert(0, "/home/team55/notespace/zengbin")

from jddc.config import PreConfig
from jddc.utils import write_file, read_file, save_to_pkl, read_from_pkl, create_logger
from jddc.obj import Session, Sentence
from jddc.seg import JiebaSeg
from jddc.similarities import SentenceSimilarity

conf = PreConfig()
logger = create_logger(name='pre', log_file=conf.log_file, cmd=conf.cmd_log)
def load_sessions():
    pkl_sessions = conf.pkl_sessions
    print("load sessions from %s" % pkl_sessions)
    sess_objs = read_from_pkl(pkl_sessions)
    return sess_objs
sessions = load_sessions()<jupyter_output>load sessions from /submitwork/data/temp/all_sessions.pkl<jupyter_text>获取全部questions---<jupyter_code>questions = []
for sess in tqdm(sessions, ncols=100, desc="get questions"):
    qs = " ".join([x[1].replace("\t", " ") for x in sess.qas_merged if x[0]=="0"])
    if 50 < len(qs) < 200:
        questions.append(qs)
len(questions)<jupyter_output><empty_output><jupyter_text>构建检索模型---<jupyter_code>ss_model = os.path.join(conf.temp_path, "q_retrieve_100000.pkl")
q_retrieve = read_from_pkl(ss_model)
seg = JiebaSeg(conf.file_stopwords)
q_retrieve = SentenceSimilarity(seg)
q_retrieve.set_sentences(questions[:100000])
q_retrieve.tfidf_model()
q_retrieve.clear()
save_to_pkl(file=ss_model, data=q_retrieve)<jupyter_output><empty_output><jupyter_text>测试检索模型---<jupyter_code>i = random.choice(range(100000, len(questions)))
for turn in range(1, 6):
    print("第%s轮" % str(turn))
    print("-" * 88)
    print(" ".join(questions[i].split(" ")[:turn]))
    res = q_retrieve.similarity(" ".join(questions[i].split(" ")[:turn]), top=5)
    pprint.pprint([x for x in res if x[1]>0.2])
    print("#" * 88)<jupyter_output>第1轮
----------------------------------------------------------------------------------------
亲
[(91643,
  0.87640554,
  '您好亲 亲 我们后台客户申请退货，但是顾客又不想退了，我们这边为什么取消不了呢 刚刚客服说终止取件  我们具体怎么操作呢 亲 可以的 亲 '
  '单号的话是顾客收货的单号吗 亲 订单号可以吗 [数字x] 亲 这是订单号 亲 好的 那这样我们告知客户了  这个单子就可以的吗 好的 好的亲 后台呢亲 '
  '一直挂着怎么办呢 好的亲 好的亲 谢谢哦 没有了哦 好的亲'),
 (67922,
  0.8344149,
  '在的亲 在的亲 [数字x] 亲这个信息的电话能帮忙改下? [数字x] 亲帮忙改下 这样配送的时候 快递就直接联系新的了吧 没了亲'),
 (94907,
  0.80604154,
  '亲，在? 亲，在? 亲，在? 亲，如果我们京东的客服要求开发票，我们可以额外增加税点? 亲，是的 亲，意思是页面选择了可以开票就不能收取 '
  '那要是显示不可以呢? 亲，好的'),
 (93352,
  0.7826351,
  '开通京东物流 我是商家 亲 开通京东配送  亲 怎么联系 亲 不知道的呢  亲 您不知道吗  亲亲 哦 好的  谢谢 没有 亲'),
 (5430,
  0.7571201,
  '亲 [订单编号:[ORDERID_10394268]，订单金额:[金额x]，下单时间:[日期x] [时间x]] 亲 亲 麻烦同意下我的退货申请 是的 '
  '好 好的 好的 谢谢')]
########################################################################################
第2轮
----------------------------------------------------------------------------------------
亲 电视机我们这边收到了
[(66130,
  0.80662376,
  '我想看一下我的电视机什么时候发货什么时候到 我想看一下我的电视机什么时候发货什么时候 在吗? 我[...]
{'fraction_non_alphanumeric': 0.21689655172413794, 'fraction_numerical': 0.04551724137931035, 'mean_word_length': 3.8756302521008403, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 16, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '106961', 'license': 'MIT', 'n_tokens_mistral': 1505, 'n_tokens_neox': 1547, 'n_words': 223, 'path': 'final/ipynb/question_retrieve.ipynb', 'repo_name': 'caoxu915683474/jddc_solution_4th', 'size': '2900'}