Migrate to new libs

This commit is contained in:
Aleksey Filippov 2024-05-04 12:35:12 +04:00
parent dfb4973b86
commit 3820878372
4 changed files with 61 additions and 57 deletions

2
.flake8 Normal file
View File

@ -0,0 +1,2 @@
[flake8]
max-line-length = 120

98
main.py
View File

@ -2,66 +2,68 @@
import sys import sys
from src.speech import Speech
from src.myontology import MyOntology from src.myontology import MyOntology
from src.nlp import NLP from src.nlp import NLP
from src.parse_tree.parse_tree import ParseTree from src.parse_tree.parse_tree import ParseTree
from src.syntax import Syntax from src.syntax import Syntax
test_data = [ test_data = [
'как получить кредит на обучение', "как получить кредит на обучение",
'Как получить кредит на образование?', "Как получить кредит на образование?",
'Можно ли купить товар в рассрочку?', "Можно ли купить товар в рассрочку?",
'какая ставка кредита на ипотеку?', "какая ставка кредита на ипотеку?",
'Самая низкая ставка по кредиту?', "Самая низкая ставка по кредиту?",
'Как оформить кредит?', "Как оформить кредит?",
'Ставка кредита', "Ставка кредита",
'Какая ставка кредита на ипотеку?', "Какая ставка кредита на ипотеку?",
'Как получить деньги с заблокированной карты?', "Как получить деньги с заблокированной карты?",
'Как снять деньги с заблокированной карты', "Как снять деньги с заблокированной карты",
'Какой баланс карты', "Какой баланс карты",
'Какой лимит карты', "Какой лимит карты",
'Почему не проходит оплата, хотя деньги есть', "Почему не проходит оплата, хотя деньги есть",
'Сколько денег на карте', "Сколько денег на карте",
'Сколько денег на счете', "Сколько денег на счете",
'Как разблокировать карту?', "Как разблокировать карту?",
'Как заблокировать карту?', "Как заблокировать карту?",
'Какие условия по ипотеке?', "Какие условия по ипотеке?",
'Какие условия кредита на жилье', "Какие условия кредита на жилье",
'Какой срок кредита на жилье', "Какой срок кредита на жилье",
'Какой срок ипотеки', "Какой срок ипотеки",
'Я потеряла карту. Что делать?', "Я потеряла карту. Что делать?",
'Карта застряла в банкомате. Что делать?', "Карта застряла в банкомате. Что делать?",
'У меня украли карту. Что делать?', "У меня украли карту. Что делать?",
'Какой остаток по карте?', "Какой остаток по карте?",
'Хочу купить дом', "Хочу купить дом",
'Хочу купить дом . Что делать?', "Хочу купить дом . Что делать?",
'Можно ли купить товар в кредит?', "Можно ли купить товар в кредит?",
'Какой срок по ипотеке', "Какой срок по ипотеке",
'Хочу купить дом в кредит Что делать?', "Хочу купить дом в кредит Что делать?",
'Можно ли снизить ставку по кредиту?', "Можно ли снизить ставку по кредиту?",
'Можно ли рефинансировать кредит?', "Можно ли рефинансировать кредит?",
'Можно ли снизить ставку по кредиту другого банка?', "Можно ли снизить ставку по кредиту другого банка?",
'У меня кредит в другом банке. Можно ли его перевести в ваш банк?', "У меня кредит в другом банке. Можно ли его перевести в ваш банк?",
'Можно провести рефинансирование кредита?', "Можно провести рефинансирование кредита?",
'Можно ли рефинансировать ипотеку?' "Можно ли рефинансировать ипотеку?",
] ]
def _main(wav_file: str): def _main(wav_file: str):
# text: str = Speech().run_recognition(wav_file) text: str = Speech().run_recognition(wav_file)
# text: str = 'Как получить деньги с заблокированной карты?' # text: str = 'Как получить деньги с заблокированной карты?'
for text in test_data: # for text in test_data:
print(f'Text: {text}') print(f"Text: {text}")
parse_tree: ParseTree = Syntax().get_parse_tree(text) parse_tree: ParseTree = Syntax().get_parse_tree(text)
print(f'Parse tree:\n{parse_tree}') print(f"Parse tree:\n{parse_tree}")
terms = NLP().get_terms(parse_tree) terms = NLP().get_terms(parse_tree)
print(f'Extracted terms:\n\t{", ".join(terms)}') print(f'Extracted terms:\n\t{", ".join(terms)}')
result: str = MyOntology().get_events(terms) result: str = MyOntology().get_events(terms)
print(f'Result:\n{result}') print(f"Result:\n{result}")
print() print()
if __name__ == '__main__':
if __name__ == "__main__":
if len(sys.argv) < 2: if len(sys.argv) < 2:
print(f'Usage: {sys.argv[0]} FILE') print(f"Usage: {sys.argv[0]} FILE")
exit(1) exit(1)
_main(sys.argv[1]) _main(sys.argv[1])

View File

@ -1,7 +1,7 @@
scipy==1.7.3 scipy==1.13.0
requests==2.27.1 requests==2.31.0
anytree==2.8.0 anytree==2.12.1
spacy==3.3.0 spacy==3.7.4
https://github.com/explosion/spacy-models/releases/download/ru_core_news_sm-3.3.0/ru_core_news_sm-3.3.0.tar.gz https://github.com/explosion/spacy-models/releases/download/ru_core_news_sm-3.7.0/ru_core_news_sm-3.7.0.tar.gz
Owlready2==0.36 Owlready2==0.46
ordered-set==4.1.0 ordered-set==4.1.0

View File

@ -39,7 +39,7 @@ class NLP:
return nodes return nodes
def __get_terms_by_template(self, tree: ParseTree, template: str, reverse: bool = False) -> List[str]: def __get_terms_by_template(self, tree: ParseTree, template: str, reverse: bool = False) -> List[str]:
terms: OrderedSet[str] = OrderedSet() terms: OrderedSet[str] = OrderedSet([])
nodes: list = [] nodes: list = []
tmplt = template tmplt = template
if '/' in template: if '/' in template:
@ -69,9 +69,9 @@ class NLP:
continue continue
terms.add(" ".join(upos_terms)) terms.add(" ".join(upos_terms))
if len(terms) == 0: if len(terms) == 0:
print(f'Can\'t find some terms by template NOUN/./NOUN') print('Can\'t find some terms by template NOUN/./NOUN')
else: else:
print(f'Success terms extraction by template NOUN/./NOUN') print('Success terms extraction by template NOUN/./NOUN')
return list(terms) return list(terms)
def __get_adj_noun(self, tree: ParseTree) -> List[str]: def __get_adj_noun(self, tree: ParseTree) -> List[str]: