Try to add the first natural language processor - 'translate'

This commit is contained in:
Richard Chien
2017-01-02 23:51:19 +08:00
parent b60a7a16eb
commit 882810378d
6 changed files with 128 additions and 7 deletions

38
nl_processor.py Normal file
View File

@ -0,0 +1,38 @@
import re
import jieba.posseg
_processors = []
_processors_without_keyword = []
def as_processor(keywords=None):
def decorator(func):
if keywords:
_processors.append((keywords, func))
else:
_processors_without_keyword.append(func)
return func
return decorator
def parse_potential_commands(sentence):
segmentation = list(jieba.posseg.cut(sentence=sentence))
print('分词结果:', segmentation)
potential_commands = []
for processor in _processors:
processed = False
for regex in processor[0]:
for word, flag in segmentation:
if re.match(regex, word):
potential_commands.append(processor[1](sentence, segmentation))
processed = True
# A word matched, skip the rest of words
break
if processed:
# Current processor has processed, skip the rest of keywords
break
for func in _processors_without_keyword:
potential_commands.append(func(sentence, segmentation))
return potential_commands