import collections
class TrieNode:
def __init__(self):
self.children = collections.defaultdict(TrieNode)
self.is_w = False
class Trie:
def __init__(self):
self.root = TrieNode()
def insert(self, w):
current = self.root
for c in w:
current = current.children[c]
current.is_w = True
def search(self, w):
current = self.root
for c in w:
current = current.children.get(c)
if current is None:
return -1
if current.is_w:
return 1
else:
return 0
def get_lexicon(self, sentence):
result = []
for i in range(len(sentence)):
current = self.root
for j in range(i, len(sentence)):
current = current.children.get(sentence[j])
if current is None:
break
if current.is_w:
result.append([i, j, sentence[i:j + 1]])
return result
if __name__ == "__main__":
sentence = ["中国人", "美国人", "英国人"]
tried_model = Trie()
for wd in sentence:
tried_model.insert(wd)
res = tried_model.get_lexicon("他是中国人,很开心")
print(res)
print('')
04-26
1018
01-27
577
12-30
3077
06-08