From 3820878372b7753388b8aadbd04099d34547906f Mon Sep 17 00:00:00 2001 From: Aleksey Filippov Date: Sat, 4 May 2024 12:35:12 +0400 Subject: [PATCH] Migrate to new libs --- .flake8 | 2 + main.py | 98 ++++++++++++++++++++++++------------------------ requirements.txt | 12 +++--- src/nlp.py | 6 +-- 4 files changed, 61 insertions(+), 57 deletions(-) create mode 100644 .flake8 diff --git a/.flake8 b/.flake8 new file mode 100644 index 0000000..79a16af --- /dev/null +++ b/.flake8 @@ -0,0 +1,2 @@ +[flake8] +max-line-length = 120 \ No newline at end of file diff --git a/main.py b/main.py index 15ef141..162cdd2 100644 --- a/main.py +++ b/main.py @@ -2,66 +2,68 @@ import sys +from src.speech import Speech from src.myontology import MyOntology from src.nlp import NLP from src.parse_tree.parse_tree import ParseTree from src.syntax import Syntax test_data = [ - 'как получить кредит на обучение', - 'Как получить кредит на образование?', - 'Можно ли купить товар в рассрочку?', - 'какая ставка кредита на ипотеку?', - 'Самая низкая ставка по кредиту?', - 'Как оформить кредит?', - 'Ставка кредита', - 'Какая ставка кредита на ипотеку?', - 'Как получить деньги с заблокированной карты?', - 'Как снять деньги с заблокированной карты', - 'Какой баланс карты', - 'Какой лимит карты', - 'Почему не проходит оплата, хотя деньги есть', - 'Сколько денег на карте', - 'Сколько денег на счете', - 'Как разблокировать карту?', - 'Как заблокировать карту?', - 'Какие условия по ипотеке?', - 'Какие условия кредита на жилье', - 'Какой срок кредита на жилье', - 'Какой срок ипотеки', - 'Я потеряла карту. Что делать?', - 'Карта застряла в банкомате. Что делать?', - 'У меня украли карту. Что делать?', - 'Какой остаток по карте?', - 'Хочу купить дом', - 'Хочу купить дом . Что делать?', - 'Можно ли купить товар в кредит?', - 'Какой срок по ипотеке', - 'Хочу купить дом в кредит Что делать?', - 'Можно ли снизить ставку по кредиту?', - 'Можно ли рефинансировать кредит?', - 'Можно ли снизить ставку по кредиту другого банка?', - 'У меня кредит в другом банке. Можно ли его перевести в ваш банк?', - 'Можно провести рефинансирование кредита?', - 'Можно ли рефинансировать ипотеку?' + "как получить кредит на обучение", + "Как получить кредит на образование?", + "Можно ли купить товар в рассрочку?", + "какая ставка кредита на ипотеку?", + "Самая низкая ставка по кредиту?", + "Как оформить кредит?", + "Ставка кредита", + "Какая ставка кредита на ипотеку?", + "Как получить деньги с заблокированной карты?", + "Как снять деньги с заблокированной карты", + "Какой баланс карты", + "Какой лимит карты", + "Почему не проходит оплата, хотя деньги есть", + "Сколько денег на карте", + "Сколько денег на счете", + "Как разблокировать карту?", + "Как заблокировать карту?", + "Какие условия по ипотеке?", + "Какие условия кредита на жилье", + "Какой срок кредита на жилье", + "Какой срок ипотеки", + "Я потеряла карту. Что делать?", + "Карта застряла в банкомате. Что делать?", + "У меня украли карту. Что делать?", + "Какой остаток по карте?", + "Хочу купить дом", + "Хочу купить дом . Что делать?", + "Можно ли купить товар в кредит?", + "Какой срок по ипотеке", + "Хочу купить дом в кредит Что делать?", + "Можно ли снизить ставку по кредиту?", + "Можно ли рефинансировать кредит?", + "Можно ли снизить ставку по кредиту другого банка?", + "У меня кредит в другом банке. Можно ли его перевести в ваш банк?", + "Можно провести рефинансирование кредита?", + "Можно ли рефинансировать ипотеку?", ] def _main(wav_file: str): - # text: str = Speech().run_recognition(wav_file) + text: str = Speech().run_recognition(wav_file) # text: str = 'Как получить деньги с заблокированной карты?' - for text in test_data: - print(f'Text: {text}') - parse_tree: ParseTree = Syntax().get_parse_tree(text) - print(f'Parse tree:\n{parse_tree}') - terms = NLP().get_terms(parse_tree) - print(f'Extracted terms:\n\t{", ".join(terms)}') - result: str = MyOntology().get_events(terms) - print(f'Result:\n{result}') - print() + # for text in test_data: + print(f"Text: {text}") + parse_tree: ParseTree = Syntax().get_parse_tree(text) + print(f"Parse tree:\n{parse_tree}") + terms = NLP().get_terms(parse_tree) + print(f'Extracted terms:\n\t{", ".join(terms)}') + result: str = MyOntology().get_events(terms) + print(f"Result:\n{result}") + print() -if __name__ == '__main__': + +if __name__ == "__main__": if len(sys.argv) < 2: - print(f'Usage: {sys.argv[0]} FILE') + print(f"Usage: {sys.argv[0]} FILE") exit(1) _main(sys.argv[1]) diff --git a/requirements.txt b/requirements.txt index 3d29a8c..bdc841a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ -scipy==1.7.3 -requests==2.27.1 -anytree==2.8.0 -spacy==3.3.0 -https://github.com/explosion/spacy-models/releases/download/ru_core_news_sm-3.3.0/ru_core_news_sm-3.3.0.tar.gz -Owlready2==0.36 +scipy==1.13.0 +requests==2.31.0 +anytree==2.12.1 +spacy==3.7.4 +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.46 ordered-set==4.1.0 \ No newline at end of file diff --git a/src/nlp.py b/src/nlp.py index 1600f56..c14dac3 100644 --- a/src/nlp.py +++ b/src/nlp.py @@ -39,7 +39,7 @@ class NLP: return nodes 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 = [] tmplt = template if '/' in template: @@ -69,9 +69,9 @@ class NLP: continue terms.add(" ".join(upos_terms)) 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: - print(f'Success terms extraction by template NOUN/./NOUN') + print('Success terms extraction by template NOUN/./NOUN') return list(terms) def __get_adj_noun(self, tree: ParseTree) -> List[str]: