Files
akaza/akaza-core/akaza/node.py
Tokuhiro Matsuno 3ee8b9574f snapshot
2020-09-14 18:36:22 +09:00

34 lines
847 B
Python

from typing import Optional
class Node:
cost: Optional[float]
def __init__(self, start_pos, word, yomi):
if len(word) == 0:
raise AssertionError(f"len(word) should not be 0")
self.start_pos = start_pos
self.word = word
self.yomi = yomi
self.prev = None
self.cost = 0
def __repr__(self):
return f"<Node: start_pos={self.start_pos}, word={self.word}," \
f" cost={self.cost}, prev={self.prev.word if self.prev else '-'} yomi={self.yomi}>"
def is_bos(self):
return self.word == '<S>'
def is_eos(self):
return self.word == '</S>'
def get_key(self) -> str:
if self.is_bos():
return '<S>'
elif self.is_eos():
return '</S>'
else:
return f"{self.word}/{self.yomi}"