我有一堆文本文件。我的应用程序要求是搜索在语义上与我通过的搜索短语匹配的句子(或段落)。
例如:让我们说一句话“快速的棕色狐狸跳过了懒狗”。
我希望以下搜索短语可以搜索我的文本文件并列出上面的句子(有时与上一句话和下一句话一起显示上下文)
(这通常是他们所说的在专利搜索站点中用于基于搜索短语-语义搜索来识别专利的内容)
为了实现-我查了一下互联网,发现的是:
from nltk.tokenize import sent_tokenize f = open("fileName") mytext = f.readline() sent_tokenize(mytext)
请建议我使用一个库同时实现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/