mirror of
https://github.com/mii443/akaza.git
synced 2025-08-22 14:55:31 +00:00
34 lines
847 B
Python
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}"
|