精华内容
下载资源
问答
  • 同时,哈希表不能处理相近查询的问题,当检索词项具有细微差别时,映射到的地址可能差别很大;其次,搜索树最典型的是搜索二叉树(二叉排序树),若左子树不空,则左子树上的所有结点值均小于等于

    用于词典搜索的数据结构:

    哈希表搜索树,需要考虑的问题包括关键字的数目、关键字数目是否经常变化、不同的关键词访问的频率差别;

    其中,哈希表为了减少地址冲突,需要用于映射的地址空间很大,同时还需要建立一个辅助功结构解决冲突;同时,哈希表不能处理相近查询的问题,当检索词项具有细微差别时,映射到的地址可能差别很大;

    其次,搜索树最典型的是搜索二叉树(二叉排序树),若左子树不空,则左子树上的所有结点值均小于等于它的根节点,若右子树不空,则左子树上的所有结点值均大于等于它的根节点,每个节点都进行一次二分类,搜索次数O(Log(M)),当搜索二叉树满足平衡性时候称平衡二叉树(AVL树),但是每次删除、插入新的词项进行的平衡化处理需要不少的开销,通常使用B-树来解决;

    通配符查询:

    对于通配符出现在词项尾部的情形,传统的搜索树适合用于此类的通配符检索;

    对于通配符出现在此项首部的情形,反向B-树适合用于此类的通配符检索;

    对于通配符出现在此项中部的情形,B-树与反向B-树结合的检索方法适合用于此类的通配符检索;

    一般通配符查询:

    轮牌索引(Permuterm Index):标记词项的结尾并且对词项进行旋转,将每一次旋转结果都指向源词项,构造出轮牌词汇表,通过搜索轮牌词汇表来检索词项,缺点在于构造出的轮牌词汇表会占用较大的空间;

    K-gram模型:k-gram代表由k个字符组成的序列,在k-gram索引结构中词典由所有词项的k-gram序列构成,每个倒排记录表则有包含该k-gram的词项组成,缺点在于k-gram由于每次可能不能准确指出词是否位于开头的结尾的情况,因此往往需要一个后过滤(postfiltering)的过程;

    拼写矫正:

    最常用的一种解决思路是将所有其他用户输入的查询中出现最频繁的拼写形式作为拼写错误的词项最后的选择(用户习惯);

    主要的拼写矫正方法有独立词项(isolated-term)矫正和上下文敏感(context-sensitive)矫正;

    两种独立词项矫正方法:编辑距离k-gram重合度

    编辑距离:是指对于词项s1和s2,将s1转换为s2所需要的最小编辑操作数,这些操作包括在字符串中插入、删除、替换一个字符的操作(有人对不同的操作赋予不同权重取得不错的实验效果),算法使用动态规划来实现;

    k-gram重合度:通过k-gram来计算Jaccard系数,当Jaccard系数满足一定的阈值后则满足过滤条件;

    除此之外还有基于发音的拼写矫正等;

    展开全文
  • 信息检索格式 布尔检索式

    千次阅读 2019-04-20 21:16:45
    信息检索格式 布尔检索式 名称 符号 表达式 功能 逻辑 * 或and AB 同时含 有提问A和B的文献,为命中文献 逻辑或 + 或or A+B 凡是含有提问A或B的文献,为命中文献 逻辑非 -或not A(-B) 凡是含有提问A但不...

    信息检索格式 布尔检索式

    名称 符号 表达式 功能
    逻辑与 * 或and AB 同时含
    有提问词A和B的文献,为命中文献
    逻辑或 + 或or A+B 凡是含有提问词A或B的文献,为命中文献
    逻辑非 -或not A
    (-B) 凡是含有提问词A但不含有B的文献,为命中文献。

    举个例子

    蔡徐坤 AND( -篮球)  
    
    • 这句话表示搜索蔡徐坤但是里面不会包含“篮球”字样。
    • 这个算法在微软Bing搜索里面可行,但是在百度里面搜索依然包括篮球二字,这里未解。
    • 还有个注意点,符号的前面要加空格隔开后面紧跟着要搜索的内容。
    展开全文
  • NLP基础:检索式问答系统实战1. 目的思路2.简单思路的实现2.1 问题-答案 库的读取2.2 对数据的相关统计2.2.1 单词统计2.2.2 单词频率统计2.2.3 Top10 单词统计2.3 对qlist进行预处理2.4 文本TF-IDF表示2.5 返回最...

    1. 目的与思路

    检索式问答系统所需要的数据已经提供,对于每一个问题都可以找得到相应的答案,所以可以理解为每一个样本数据是 <问题、答案>pair。 那系统的核心是当用户输入一个问题的时候,首先要找到跟这个问题最相近的已经存储在库里的问题,然后直接返回相应的答案即可。

    1. 最简单的思路是:将用户的输入与问题库中每个问题进行比较,找到与输入最相似的问题,并将该问题对应的答案返回给用户即可。这里衡量相似度通过计算输入与问题表示之间的欧式距离、余弦相似度实现。
    2. 上述的思路简单,但是操作复杂度高,因为要计算输入与库中的每一个问题进行相似度计算。因此要考虑优化,引入倒排表,通过层层过滤,将可选的问题范围逐步缩小。比如,可以先筛选出与用户输入有1个公共字符的问题,甚至是2个、3个…条件越严格,那么候选的问题数量就越少,计算量大大减小。
    3. 计算输入与问题的相似度时,需要得到它们的向量表示。在这里,首先采用TF-IDF文本表示,进行计算;其次,采用已经训练好的glove.6B 100维词向量,通过average操作,得到句子的整体向量表示进行计算。

    2. 简单思路的实现

    将用户的输入与问题库中每个问题进行比较,找到与输入最相似的Top5问题,并将Top5问题对应的答案返回给用户即可。

    2.1 问题-答案 库的读取

    采用的数据集是机器阅读理解数据集(SQuAD 2.0),一共86821个问题-答案 pair。

    #读取数据
    # 分数(5)
    import json
    import matplotlib.pyplot as plt
    import numpy as np
    from nltk.stem.porter import PorterStemmer
    from sklearn.feature_extraction.text import TfidfVectorizer
    
    def read_corpus():
        """
        读取给定的语料库,并把问题列表和答案列表分别写入到 qlist, alist 里面。 在此过程中,不用对字符换做任何的处理(这部分需要在 Part 2.3里处理)
        qlist = ["问题1", “问题2”, “问题3” ....]
        alist = ["答案1", "答案2", "答案3" ....]
        务必要让每一个问题和答案对应起来(下标位置一致)
        """
        qlist = []
        alist = []
        with open("././data/train-v2.0.json") as f:
            all_data = json.load(f)['data']
            for data in all_data:
                paragraphs = data['paragraphs']
                for paragraph in paragraphs:
                    for qa in paragraph['qas']:
                        # print(qa['id'])
                        if qa['answers']:
                            qlist.append(qa['question'])
                            alist.append(qa['answers'][0]['text'])
        assert len(qlist) == len(alist)  # 确保长度一样
        print("Load question and answer success. The length :{}".format(len(qlist)))
        return qlist, alist
    
    qlist, alist = read_corpus()
    

    运行结果:

    Load question and answer success. The length :86821

    2.2 对数据的相关统计

    2.2.1 单词统计

    # TODO: 统计一下在qlist 总共出现了多少个单词? 总共出现了多少个不同的单词?
    #       这里需要做简单的分词,对于英文我们根据空格来分词即可,其他过滤暂不考虑(只需分词)
    word_voc = []
    for question in qlist:
        question = question.replace('?', ' ?')
        line = question.strip().split()
        word_voc += line
    word_voc = set(word_voc)
    word_total = len(word_voc)
    print("Num of total words:{}".format(word_total))#51930
    

    运行结果:

    Num of total words:51930

    2.2.2 单词频率统计

    # TODO: 统计一下qlist中每个单词出现的频率,并把这些频率排一下序,然后画成plot. 比如总共出现了总共7个不同单词,而且每个单词出现的频率为 4, 5,10,2, 1, 1,1
    #       把频率排序之后就可以得到(从大到小) 10, 5, 4, 2, 1, 1, 1. 然后把这7个数plot即可(从大到小)
    #       需要使用matplotlib里的plot函数。y轴是词频
    word_freq = {}#统计qlist的单词频率
    for question in qlist:
        question = question.replace('?', ' ?')
        line = question.strip().split()
        for word in line:
            if word in word_freq:
                word_freq[word] += 1
            else:
                word_freq[word] = 1
    sort_word_freq = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)
    all_word = []
    word_count = []
    for word, count in sort_word_freq:
        all_word.append(word)
        word_count.append(count)
    # scale_ls = range(len(all_word))
    # plt.plot(scale_ls, word_count)
    # plt.xticks(scale_ls, all_word)
    plt.bar(range(20), word_count[:20], color='rgb', tick_label=all_word[:20])#画出前20个词
    plt.show()
    

    运行结果:
    在这里插入图片描述
    从上面的图中可以看, 这样的一个图的走势跟反比例函数形状很类似,也就是学术界的 Zipf’s law:第二常见的频率是最常见频率的出现次数的½,第三常见的频率是最常见的频率的1/3,第n常见的频率是最常见频率出现次数的1/n

    2.2.3 Top10 单词统计

    # TODO: 在qlist和alist里出现次数最多的TOP 10单词分别是什么?
    word_freq_ = {}#统计alist的单词频率
    for answer in alist:
        answer = answer.replace('.', ' .')
        line = answer.strip().split()
        for word in line:
            if word in word_freq_:
                word_freq_[word] += 1
            else:
                word_freq_[word] = 1
    sort_word_freq_ = list(sorted(word_freq_.items(), key=lambda x: x[1], reverse=True))
    
    print("qlist top 10 单词分别是:")
    for x in range(10):
        print(all_word[x])
    
    print("alist top 10 单词分别是:")
    for y in range(10):
        print(sort_word_freq_[y][0])
    

    运行结果:

    qlist top 10 单词分别是:
    ?
    the
    What
    of
    in
    to
    was
    is
    did
    what
    alist top 10 单词分别是:
    the
    of
    and
    to
    a
    in
    .
    The
    or
    for

    2.3 对qlist进行预处理

    
    # TODO: 对于qlist做文本预处理操作。 可以考虑以下几种操作:
    #       1. 停用词过滤 (去网上搜一下 "english stop words list",会出现很多包含停用词库的网页,或者直接使用NLTK自带的)
    #       2. 转换成lower_case: 这是一个基本的操作
    #       3. 去掉一些无用的符号: 比如连续的感叹号!!!, 或者一些奇怪的单词。
    #       4. 去掉出现频率很低的词:比如出现次数少于10,20....
    #       5. 对于数字的处理: 分词完只有有些单词可能就是数字比如44,415,把所有这些数字都看成是一个单词,这个新的单词我们可以定义为 "#number"
    #       6. stemming(利用porter stemming): 因为是英文,所以stemming也是可以做的工作
    #       7. 其他(如果有的话)
    #       请注意,不一定要按照上面的顺序来处理,具体处理的顺序思考一下,然后选择一个合理的顺序
    #  hint: 停用词用什么数据结构来存储? 不一样的数据结构会带来完全不一样的效率!
    new_qlist = []
    new_alist = []
    stopwords =[]
    porter_stemmer = PorterStemmer()
    ##加载停止词
    with open("././data/stopwords") as f1:
        lines = f1.readlines()
        for line in lines:
            stopwords.append(line.strip())
    stopwords = set(stopwords)
    
    for question in qlist:
        tmp = ''
        for sign in ['.', '?', '/', '#', '$', '@', '^', '*', '!', '(', ')']:
            question = question.replace(sign, '')
        # question = question.replace('?', ' ?')
        line = question.strip().split()
        for word in line:
            try:
                if word_freq[word] <= 20:#筛选出频率大于20的词
                    continue
                word = word.lower()
            except:
                pass
            if word in stopwords:
                continue
            for num in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:#将含有数字的字符统一设置为1
                if str(num) in word:
                    word = '1'
            word = porter_stemmer.stem(word)# 进行stemming 操作
            tmp = tmp + word + " "
        new_qlist.append(tmp[:-1])
        
    qlist = new_qlist# 更新后的#得到更新后问题列表
    print("预处理完成!")
    

    2.4 文本TF-IDF表示

    做完关键的预处理过程之后,就需要把每一个文本转换成向量

    # TODO: 把qlist中的每一个问题字符串转换成tf-idf向量, 转换之后的结果存储在X矩阵里。 X的大小是: N* D的矩阵。 这里N是问题的个数(样本个数),
    #       D是字典库的大小。
    
    vectorizer = TfidfVectorizer(use_idf=True, smooth_idf=True, norm='l2') # 定义一个tf-idf的vectorizer
    
    tf_idf_model = vectorizer.fit(qlist)
    X = tf_idf_model.transform(qlist)
    X = X.toarray()
    print(len(vectorizer.get_feature_names()))
    
    # TODO: 矩阵X有什么特点? 计算一下它的稀疏度
    sparsity = 1.0 - np.count_nonzero(X)/X.size
    print(sparsity)  # 打印出稀疏度(sparsity)
    

    运行结果:

    2688
    0.9985813766871741

    TF-IDF的维度(词典库的大小)为2688,qlist的稀疏度为0.99

    2.5 返回最匹配的TOP5 答案

    def top5results(input_q):
        """
        给定用户输入的问题 input_q, 返回最有可能的TOP 5问题。这里面需要做到以下几点:
        1. 对于用户的输入 input_q 首先做一系列的预处理,然后再转换成tf-idf向量(利用上面的vectorizer)
        2. 计算跟每个库里的问题之间的相似度
        3. 找出相似度最高的top5问题的答案
        """
        #预处理
        tmp = ''
        for sign in ['.', '?', '/', '#', '$', '@', '^', '*', '!', '(', ')']:
            question = input_q.replace(sign, '')
        # question = question.replace('?', ' ?')
        line = question.strip().split()
        for word in line:
            try:
                if word_freq[word] <= 20:
                    continue
                word = word.lower()
            except:
                pass
            if word in stopwords:
                continue
            for num in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
                if str(num) in word:
                    word = '1'
            word = porter_stemmer.stem(word)
            tmp = tmp + word + " "
        input_str = [tmp[:-1]]
        input_str = tf_idf_model.transform(input_str).toarray()[0]
    
        simlarity = [0]*len(X)
        for index in range(len(X)):
            cos_sim = np.dot(input_str, X[index]) / (np.linalg.norm(input_str)*np.linalg.norm(X[index])+1)
            simlarity[index] = cos_sim
    
        top_idxs = []# top_idxs存放相似度最高的(存在qlist里的)问题的下表
        for _ in range(5):
            index = simlarity.index(max(simlarity))
            top_idxs.append(index)
            del simlarity[index]
    
        # hint: 利用priority queue来找出top results. 思考为什么可以这么做?
    
        return [alist[indx] for indx in top_idxs]# 返回相似度最高的问题对应的答案,作为TOP5答案
    
    # TODO: 编写几个测试用例,并输出结果
    print(top5results("What areas did Beyonce compete in when she was growing up?"))
    

    运行结果:

    [‘singing and dancing’,
    ‘2003’,
    ‘racial minorities and white liberals. Because of this, the area has consistently voted as one of the most Democratic areas of the state’,
    ‘crown’,
    ‘feminism and female empowerment’]

    3. 基于倒排表的优化

    基于倒排表的优化。在这里,我们可以定义一个类似于hash_map, 比如 inverted_index = {}, 然后存放包含每一个关键词的文档出现在了什么位置。也就是,通过关键词的搜索首先来判断包含这些关键词的文档(比如出现至少一个),然后对于candidates问题做相似度比较。

    3.1 建立倒排表

    得到一个倒排表,key为word,value为含有该word的文档索引,这里使用的qlist是最原始的qlist,并不是预处理后的qlist,因为只是需要进行筛选,没必要预处理

    def generate_inverted_idx():
        """
        return : 返回一个倒排表,key为word,value为含有该word的文档索引
        """
        inverted_idx = {}  # 定义一个简单的倒排表
    
        for i in range(len(qlist)):
            quest = qlist[i].replace('?', ' ?')
            line = quest.strip().split()
            for word in line:
                if word in inverted_idx:
                    inverted_idx[word].append(i)
                else:
                    inverted_idx[word] = [i]
    
        return inverted_idx
    inverted_idx = generate_inverted_idx()
    

    3.2 利用倒排表进行优化

    返回最匹配的TOP2 答案

    def top5results_invidx(input_q, k):
        """
        param :input_q :输入的问题
        param :k:要包含问题的前K个字符,依次来对问题库进行过滤, k 越大要求越严格
        return : 返回相似度Top2的答案
        给定用户输入的问题 input_q, 返回最有可能的TOP 5问题。这里面需要做到以下几点:
        1. 利用倒排表来筛选 candidate
        2. 对于用户的输入 input_q 首先做一系列的预处理,然后再转换成tf-idf向量(利用上面的vectorizer)
        3. 计算跟每个库里的问题之间的相似度
        4. 找出相似度最高的top5问题的答案
        """
        #利用倒排表,筛选出候选问题的索引 doc_lst 
        quest = input_q.replace('?', ' ?')
        line = quest.strip().split()
        doc_lst = range(len(qlist))
    	# 得到包含用户输入的前 k 个字符的 candidates
        for j in range(k):
            word = line[j]
            doc = inverted_idx[word]
            doc_lst = list(set(doc_lst) & set(doc))
    
        # 预处理
        tmp = ''
        for sign in ['.', '?', '/', '#', '$', '@', '^', '*', '!', '(', ')']:
            question = input_q.replace(sign, '')
        # question = question.replace('?', ' ?')
        line = question.strip().split()
        for word in line:
            try:
                if word_freq[word] <= 20:
                    continue
                word = word.lower()
            except:
                pass
            if word in stopwords:
                continue
            for num in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
                if str(num) in word:
                    word = '1'
            word = porter_stemmer.stem(word)
            tmp = tmp + word + " "
        input_str = [tmp[:-1]]
        
    	#获得用户输入的tf-idf表示
        input_str = tf_idf_model.transform(input_str).toarray()[0]
    
        simlarity = {}
        for index in doc_lst:
            cos_sim = np.dot(input_str, X[index]) / (np.linalg.norm(input_str) * np.linalg.norm(X[index]) + 1)
            simlarity[index] = cos_sim
    
        top_idxs = []  # top_idxs存放相似度最高的(存在qlist里的)问题的下表
    
        simlarity = list(sorted(simlarity.items(), key=lambda x: x[1], reverse=True))
    
        for _ in range(2):
            index, cos = simlarity[_]
            top_idxs.append(index)
        # hint: 利用priority queue来找出top results. 思考为什么可以这么做?
    
        return [alist[indx] for indx in top_idxs]  # 返回相似度最高的问题对应的答案,作为TOP5答案
    
    # TODO: 编写几个测试用例,并输出结果
    print (top5results_invidx("What areas did Beyonce compete in when she was growing up?", 3))
    

    运行结果:

    [‘singing and dancing’, ‘local customs and traditions’]

    4. 基于词向量的文本表示

    上述进行相似度的计算,都是基于句子的tf-idf表示,现在换成word embeding进行句子表示,得到基于词向量的返回结果。

    4.1 embedding 获取

    采取的是glove.6B 100维向量,直接去官网下载速度较慢,下载请参考glove.6B下载(百度云下载)

    emb = {}  # 读取每一个单词的嵌入.key为单词,value 为相应的词向量
    with open("././data/glove.6B.100d.txt", encoding='utf-8') as f2:
        all_lines = f2.readlines()
        for one_line in all_lines:
            line_splits = one_line.strip().split()
            emb[line_splits[0]] = [np.float(x) for x in line_splits[1:]]
    

    4.2 句子的表示

    基于词向量,对一个句子的所有词的词向量取平均值,作为句子的向量表示。

    def get_sentence_emb(input_str):
        """
        param: input_str :输入的句子
        return : 句子的表示
        """
        emb_list = []
        #句子的预处理
        # 其中,最简单的方式 句子向量 = 词向量的平均(出现在问句里的), 如果给定的词没有出现在词典库里,则忽略掉这个词。
        quest = input_str.replace('?', ' ?')
        line = quest.strip().split()
        for word in line:
            if word.lower() in emb:
                emb_list.append(emb[word.lower()])
            else:
                pass
        result = np.mean(np.array(emb_list), axis=0)
        return result
    

    4.3 基于词向量-倒排表的问答系统

    def top5results_emb(input_q, k):
        """
        param :input_q :输入的问题
        param :k:要包含问题的前K个字符,依次来对问题库进行过滤, k 越大要求越严格
        return : 返回相似度Top2的答案
        给定用户输入的问题 input_q, 返回最有可能的TOP 5问题。这里面需要做到以下几点:
        1. 利用倒排表来筛选 candidate
        2. 对于用户的输入 input_q,转换成句子向量
        3. 计算跟每个库里的问题之间的相似度
        4. 找出相似度最高的top5问题的答案
        """
    
        #通过过滤,得到少量候选问题
        quest = input_q.replace('?', ' ?')
        line = quest.strip().split()
        doc_lst = range(len(qlist))
        for j in range(k):
            word = line[j]
            doc = inverted_idx[word]
            doc_lst = list(set(doc_lst) & set(doc))
    
    
        simlarity = {}
        for index in doc_lst:
            input_emb = get_sentence_emb(input_q)
            doc_emd = get_sentence_emb(qlist[index])
            cos_sim = np.dot(input_emb, doc_emd) / (np.linalg.norm(input_emb) * np.linalg.norm(doc_emd) + 1)
            simlarity[index] = cos_sim
    
        top_idxs = []  # top_idxs存放相似度最高的(存在qlist里的)问题的下表
    
        simlarity = list(sorted(simlarity.items(), key=lambda x: x[1], reverse=True))
    
        for _ in range(2):
            index, cos = simlarity[_]
            top_idxs.append(index)
        # hint: 利用priority queue来找出top results. 思考为什么可以这么做?
        return [alist[indx] for indx in top_idxs]  # 返回相似度最高的问题对应的答案,作为TOP2答案
    
    print (top5results_emb("What areas did Beyonce compete in when she was growing up?", 3))
    

    运行结果:

    [‘singing and dancing’, ‘local customs and traditions’]

    5. 总结

    1. 倒排表这个概念有了进一步的理解。
    2. 了解numpy 里面范数的计算,比如np.linalg.norm计算向量的二范数。
    3. 基于搜索的问答还是太简单,不能够满足日常需要,现在的问答应该都是基于深度语义的,可是作为NLP的基础,可以通过此任务了解tf-idf的向量表示numpy基本数学操作倒排表英文文本处理流程、可以通过哪些方法得到词向量(Skip-gram、CBOW 、Glove、RNN/LSTM、Matrix Factorization、Gaussian Embedding)等等。
    展开全文
  • 检索策略有广义和狭义之分, 从广义上说, 检索策略是在充分分析课题内容实质的基础上, 选择检索工具与检索径、发掘检索点、确定检索词及其相互间的逻辑关系, 到给出检索顺序的最佳实施方案等一系列的科学措施。...
  • 检索报告综述来自

    2019-12-04 12:58:43
    分析检索课题, 构建检索式 1 分析检索课题 写出分析过程。 分析待查课题的主要内容及所属学科: 分析课题需要查找的文献类型。 2 确定检索词 列出课题检索词。 分析课题的主要概念隐含概念,切分并提取相关概念; ...

    分析检索课题, 构建检索式
    1 分析检索课题
    写出分析过程。
    分析待查课题的主要内容及所属学科:
    分析课题需要查找的文献类型。
    2 确定检索词
    列出课题检索词。
    分析课题的主要概念与隐含概念,切分并提取相关概念;
    借助相关工具确定 检索词;
    考虑检索词的多种表达方式,扩充检索词。
    3 编写检索式
    写出你所构造的检索式,要求检索式能准确地表达课题的主题概念。
    确定检索词及 词间关系,包括检索词的校验、 调整、选择和组合:
    确定检索途径, 说明选择检索途径的理由;
    灵活运用多 种检索技术和各种检索方法。
    选择检索工具,进行检索
    1 确定检索工具
    写出确定检索工具的思路。
    利用学术搜索、发现系统或其他方式挑选课题所需信息源及与之对应的检索
    2 实施检索
    写出利用各类检索工具进行检索的过程。
    拷屏各类检索工具的主要检索过程;
    考察检索结果是否满足课题对于文献检全率和检准率的要求;
    3 评估检索结果,调整检索策略
    评价检索结果,并写出调整检索策略的思路。
    综合运用多 种方法调整检索策略。
    列出 实际检索结果。
    三 列出相关文献,撰写检索结论
    1 列出相关文献
    通过多种方式筛选相关文献,做到重要文献不遗漏;
    应客观、公正、准确、清晰地反映课题的真实情况;
    2撰写检索结论
    按照文献综述的要求撰写检索结论。
    依据检出文献的相关程度,对中文文献检出情况进行陈述;
    检索结论较全面地反映了课题整个的发展周期及发展趋势等;
    按照规范的参考 文献格式著录文后参考文献。

    展开全文
  • 解析搜索引擎检索式的构建

    千次阅读 2006-10-22 01:06:00
    网络搜索中的关键词是一个广义的概念,属于非受控自由,凡是具有实际意义的表达及其书写形式,如字、、词组、短语和字母、数字、符号、公式等,都可以用作搜索关键词。 网络搜索,实际上是在搜索引擎的索引...
  • 本文对一般级上下文向量,以及对话语级别上下文向量理解,来进行上下文response匹配。作者提供了一种直接的单轮转多轮思路——将多轮问答语句合并为一列, 连接处用_SOS_隔开, 将整个对话历史视为"一句话"去匹配下...
  • 类似汽车电子行业的英文检索词典,可以针对自己遇到的一些陌生单词进行检索式查询,内容涵盖燃油车和新能源车辆,期待可以帮助到您
  • 信息检索

    2010-05-08 16:20:25
    1. 信息检索(Information retrieval)基本原理: 提问标识(检索式) 文献标识的对比.2. 信息检索常用方法: (一)布尔逻辑: 逻辑或(+,OR): 逻辑(*,AND): 逻辑非(-,NOT): (二)向量空间模型: (三)概率模型: 3...
  • 注意:由于该功能背后的Web服务本身已,因此图像发现和检索已消失。 设置 并查阅“部分中有关放置在哪里的信息,以供万花筒查找。 同样,并将其提供给Kaleidoscope。 准备万花筒的。 需要设置一些库,但是我现在...
  • 现有的大多数信息检索模型都假定文本文档的术语... 在本文中,我们提出了一种启发方法,其中采用查询词与文档的语义一致性程度来提高信息检索性能。 在标准TREC集合上的实验结果表明,所提出的模型始终优于最新模型。
  • 大学文献检索资料 DOC

    2009-11-28 10:35:24
    3.按出版形式划分: 期刊式检索工具,单卷式检索工具,附录式检索工具,卡片式检索工具, 缩微制品、磁带、磁盘。 4.按收录文献对象和揭示文献方式划分:目录、题录、文摘(指示性、报道性)、 索引 五、检索工具的...
  • 积木型检索式2.更为复杂的形式三、搜索引擎的类型1.按信息采集方式划分2.按内容组织方式划分3.按范围划分4.按搜索引擎功能划分5.按适用对象划分 一、信息检索基本方法 1.布尔逻辑检索 ①逻辑:AND, * ②逻辑或:OR...
  • 你无需对自己的数据库文件做任何更改,就可以为数据库文件创建可供编程语言调用的ActiveX DLL全文检索接口,可用于任何数据库检索有关的查询,例如全文搜索、垂直搜索、海量数据库LIKE快速查询等。软件主要特点...
  • Sphinx是一个基于SQL的全文检索...提供从MySQL内部的插件存储引擎上搜索 支持布尔,短语, 和近义查询; 支持每个文档多个全文检索域(默认最大32个); 支持每个文档多属性; 支持断; 支持单字节编码UTF-8编码;
  • Sphinx是一个基于SQL的全文检索...提供从MySQL内部的插件存储引擎上搜索 支持布尔,短语, 和近义查询; 支持每个文档多个全文检索域(默认最大32个); 支持每个文档多属性; 支持断; 支持单字节编码UTF-8编码;
  • 基于内容的图像检索技术(6)

    千次阅读 2014-10-14 22:34:29
     从上面对图像搜索引擎的讨论中,我们可以看出,图像搜索引擎所实现的图像检索基本上是文本搜索引擎类似的基于图像内容描述(description-based)的语义层次的匹配(例如通过关键词或自由、分类目录)。...
  • 标签 PostgreSQL , 全文检索 , 位置过滤 ...那么实际上在搜索的需求中,还有一类位置过滤的需求,例如“速度激情”这个,分词后是有位置信息的,我们期望搜到的是“速度”和“激情”之间间隔一个的情况,提...
  • 的键值对,在数据检索时比序列容器效率高 键值对的概念 用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代表键值,value表示key对应的信息。例如apple它有一个对应的中文...
  • 1986年由富士通岩波书店共同开发的「広辞苑CD-ROM」为始祖。  日本通用电子书词典格式之一。其特点是采取壳软件,如EBPocket、ebwin、DDwin。可具有按前项查询,后项查询,完全符合等各种复杂的查询方式。能够...
  • 市场信息调研

    2014-04-26 09:36:24
    检索式检索词和连接组配符号组成。检索词分为两类:受控词和非受控词。受控词是事先规范化的检索语言,取自主题词表、叙词表、分类表等,如果数据库对数据采用了受控标引,并有机读式或印本式主题词表时,应优先...
  • 关联容器set

    2021-05-26 20:24:40
    结构的键值对,在数据检索时比序列容器效率更高。 2. 键值对 用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代表键值,value表示key对应的信息。比如:现在要建立一个...
  • 自然语言处理(NLP)的最新进展表明,分布式模型可以有效地获取单词的语义上有意义的表示。... 我们报告了文档分类,聚类和检索实验,并证明现有的基准方法相比,我们的模型可以产生最先进的性能。
  • 该指南将引导你创建功能性反应应用,该应用使用 Spring Data 通过非阻塞 Lettuce 驱动程序 Redis 进行交互。   你将创建的应用 我们将构建一个 Spring 应用,该应用使用 Spring Data Redis 和 Project ...
  • 带有Go和JSON API的Go模块,用于交互中文文本处理批处理索引的语料库相反 下面显示了带有文本标记化的多个术语的字典查找屏幕快照。 该Web应用程序驱动 : 和网站以及为佛光山开发的私人翻译门户网站,并。 ...
  • 针对这一问题,考虑到对话系统作为一种较为高级的信息检索系统,能够根据用户的输入及时返回相关有效信息,本文探索了一种适用于消化科领域的生成对话系统,通过支持向量机分类主动学习相结合,在多个医学网站...
  • Mianbot是采用样板与检索式模型搭建的聊天机器人,目前有两种产生回覆的方式,专案仍在开发中:) 其一(左图)是以向量进行短语分类,针对分类的目标模组实现特征抽取与记忆回覆功能,以进行多轮对话,匹配方式可...
  • 支持对学习过程中的划词检索和标注,包括检索工具书、检索文献、词组翻译、检索定义、Google Scholar检索等;支持将两篇文献在同一个窗口内进行对比研读。 4.记录数字笔记 实现知识管理 支持将文献内的有用信息记录...
  • 本文的内容非常时尚,将计算从移动设备转移到云上,我们倾向于倾向于优化移动购物者云之间的通信。 毫无疑问,一旦应用了性能改进方法,数据隐私就不会降低。 我们的实验表明,TEES将计算时间减少了23到40个半打...
  • 这是Wordle和StreamGraph的混合技术,可同时使用全局和局部透视传递文本数据。 全球趋势由总流来描述,其中厚度表示该特定时间点的兴趣/关注量。 从单个流中检索局部趋势。 时间线从左至右显示在界面底部。 文本...

空空如也

空空如也

1 2 3 4 5 6
收藏数 109
精华内容 43
关键字:

检索词与检索式