gpt4 book ai didi

python - 语义搜索-从一堆文本文件中检索与传入的搜索词组非常匹配的句子

转载 作者:行者123 更新时间:2023-12-02 22:37:02 26 4
gpt4 key购买 nike

我有一堆文本文件。我的应用程序要求是搜索在语义上与我通过的搜索短语匹配的句子(或段落)。

例如:让我们说一句话“快速的棕色狐狸跳过了懒狗”。

我希望以下搜索短语可以搜索我的文本文件并列出上面的句子(有时与上一句话和下一句话一起显示上下文)

  • 狐狸
  • 狐狸跳过狗
  • 布朗狐狸(在此注意拼写错误)

  • (这通常是他们所说的在专利搜索站点中用于基于搜索短语-语义搜索来识别专利的内容)

    为了实现-我查了一下互联网,发现的是:
  • 使用nltk python库中的句子标记器将文本文件分解为句子:

  • from nltk.tokenize import sent_tokenize 
    f = open("fileName")
    mytext = f.readline()
    sent_tokenize(mytext)

  • 需要一个等效的 flex 搜索匹配功能,通过上述传递搜索短语实际上可以找到我要查找的句子。

  • enter image description here

    请建议我使用一个库同时实现1和2的简单方法。该应用程序仅在我的计算机上本地运行。

    最佳答案

    依存关系:

    pip install autocorrect
    代码(search.py​​):
    from autocorrect import spell
    def lcs(X, Y):
    mat = []
    for i in range(0,len(X)):
    row = []
    for j in range(0,len(Y)):
    if X[i] == Y[j]:
    if i == 0 or j == 0:
    row.append(1)
    else:
    val = 1 + int( mat[i-1][j-1] )
    row.append(val)
    else:
    row.append(0)
    mat.append(row)
    new_mat = []
    for r in mat:
    r.sort()
    r.reverse()
    new_mat.append(r)
    lcs = 0
    for r in new_mat:
    if lcs < r[0]:
    lcs = r[0]
    return lcs
    def spellCorrect(string):
    words = string.split(" ")
    correctWords = []
    for i in words:
    correctWords.append(spell(i))
    return " ".join(correctWords)
    def semanticSearch(searchString, searchSentencesList):
    result = None
    searchString = spellCorrect(searchString)
    bestScore = 0
    for i in searchSentencesList:
    score = lcs(searchString, i)
    if score > bestScore:
    bestScore = score
    result = i
    return result


    result = semanticSearch("fox jump over dog", ["The quick brown fox jumped over the lazy dog", "This is one more string which contains fox bron"])
    print result

    关于python - 语义搜索-从一堆文本文件中检索与传入的搜索词组非常匹配的句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47605377/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com