私は学校プロジェクトのためにPythonでチャットボットをやっています。それは簡単なことです:私は質問をして、すべての質問と回答でtxtファイルを検索します持っていて、答えてくれます。 私がしたいことは、データベース内で最も類似した質問をどのように検索できるかを知ることです。Pythonでもっともよく似た文字列を検索
-5
A
答えて
0
最も簡単なことは、fuzzywuzzy
のような文字列類似パッケージを使用することです。 Pythonの標準ライブラリであるdifflib
を使用しています。以下は
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
query = 'user query'
options = [list of all questions in your file]
result = process.extractOne(query, options)
# result will contain best matching option and it's confidence score
を繰り返しますが、これを行うには非常に多くのより良い方法がありますが、私はこれが最も簡単だと思います。
+0
答えをありがとう私はこの記事を忘れてしまった。私は結婚式のマッチャーとLevenshtein – Obsession
1
私はこれを投稿していたことを忘れていましたが、誰かがそれを使いたい場合はコードとその作業を行い、SequenceMatcherとLevenshteinアルゴリズムを使用しました。
def startChatBot():
cls()
ExitFlag = 0
while (ExitFlag != 1):
print('Write Exit to return to menu!!')
FoundFlag = 0
Q = input("What is your question? \n")
if (Q=='Exit'):
ExitFlag=1
main()
elif (Q== 'Que horas são?'):
print(datetime.datetime.now())
else:
bestRatio = 0
BestDist = 40000
#SequenceMatcher
for item in database:
if SequenceMatcher(None, item, Q).ratio()>AcceptanceRatio and SequenceMatcher(None, item, Q).ratio()>bestRatio:
squenceactual = SequenceMatcher(None, item, Q).ratio()
bestRatio = squenceactual
print('SquenceMatcher Found a better answer in the database with ratio of', bestRatio)
S = database.index(item)
print(database[S+1])
FoundFlag = 1
#Levenshtein
for item in database:
actualDistance = distance(Q, item)
if (actualDistance < BestDist):
BestDist = actualDistance
Solution = database.index(item)
print('Levenshtein found a better answer in the database with distance of', BestDist)
FoundFlag = 1
print(database[Solution+1])
if FoundFlag == 0:
print('Answer not found!\n')
print('Can you add an answer?\n')
k = input('Y for yes N for no\n')
if k== 'Y' or k=='y':
correct = input('what is the correct answer? \n')
with open("BasedeDados.txt", "a") as file:
file.write('#')
file.write(Q)
file.write('#')
file.write(correct)
#close and reopen database
openFile()
elif FoundFlag == 1:
h = input('Was this the correct answer? Y-Yes N-No \n')
if h == 'n' or h =='N':
correct = input('what is the correct answer? \n')
with open("BasedeDados.txt", "a") as file:
file.write('#')
file.write(Q)
file.write('#')
file.write(correct)
#reopen datababse
openFile()
関連する問題
- 1. シーケンス番号で検索すると文字列を検索するよりも速くなりますか?
- 2. JavaScriptを使って子どもをXPath検索と似たようにする
- 3. OQLを使った文字列検索
- 4. JAVAの完全な文字列に似た空白文字列を検索
- 5. 文字列を検索しても前の文字列を返す
- 6. DBに格納された文字列よりも長い文字列を検索する方法 - SQL Server、PHP
- 7. 特殊文字に似た文字を検索
- 8. 文字列の比較、最も類似したものを返します
- 9. 最も最近のファイルの文字列を検索するバッチファイル
- 10. pjhpのin_arrayに似たmysql検索文字列
- 11. Pythonの:(リストから)最も近い文字列を検索する別の文字列に
- 12. PostgreSQL全文検索サブ文字列を使って検索
- 13. tsqlで類似の文字列を検索する
- 14. Python:ファイル上の文字列を検索
- 15. 私はサンプル文字列とても似てい
- 16. SQL - テーブルの列内で最も完全な文字列を検索する
- 17. 文字列検索とは
- 18. SPHINX(検索):クエリでSQLを偽ったようなもの
- 19. Python REGEXはregex101よりも多くの文字列データを返しますPython
- 20. mciSendString、コマンド "wait"に似たものを検索
- 21. python文字列検索置換
- 22. 高度なPython文字列検索
- 23. マルチプロセッシングファジー曖昧な文字列検索 - python
- 24. Pythonの検索文字列ワンライナー
- 25. 縮退した文字列をPythonで検索する
- 26. 文字列の検索と置換を行う最も良い方法
- 27. PythonとBeautifulSoup HTMLでテキスト文字列を検索するには
- 28. 検索文字列
- 29. 検索文字列
- 30. Lodash:配列内の少なくとも1つの値の文字列を検索
アルゴリズムを実装します。お役に立てれば! –
http://idownvotedbecau.se/noattempt/(ジョーク:Rick&Mortyを見て、あなたのIQはこの問題を解決するのに十分な高さでなければなりません) – byxor
コードを追加して、働いていることを示してから、あなたの問題。 – IMCoins