Module jpfreq.main
Main, CLI tool for testing JPFreq
Expand source code
"""
.. include:: ../../documentation/main.md
"""
from .jp_frequency_list import JapaneseFrequencyList
from .exporters.iexporter import IExporter
from .exporters.json import JsonExporter
# UniDic word contains:
# char_type
# feature
# feature_raw
# is_unk
# length
# pos
# posid
# rlength
# stat
# surface
# white_space
def get_exporter(exporter_name: str) -> IExporter:
exporter_name = exporter_name.lower().strip()
if exporter_name == "json":
return JsonExporter()
raise ValueError(f"Unknown exporter '{exporter_name}'")
def main():
freq_list = JapaneseFrequencyList()
while True:
input_text = ""
try:
input_text = input("Command> ")
except EOFError:
print()
break
except KeyboardInterrupt:
print()
break
if input_text == "q":
break
elif input_text == "c":
print(f"Cleared frequency list with {len(freq_list)} entries")
freq_list.clear()
elif input_text == "p":
print(freq_list)
elif input_text == "s":
for word in freq_list.get_most_frequent():
print(word)
elif input_text.startswith("s "):
word = input_text[2:]
if word in freq_list:
words = freq_list[word]
for word in words:
print(word)
print(word.word.feature)
print(word.word.pos)
else:
print(f"Word '{word}' not found in frequency list")
elif input_text.startswith("e "):
exporter_name = input_text.split(" ")[1]
exporter = None
try:
exporter = get_exporter(exporter_name)
except ValueError as e:
print(e)
continue
print(exporter.export(freq_list))
elif input_text.startswith("i "):
input_text = input_text[2:]
for word in freq_list.parse_line(input_text):
print(word)
else:
freq_list.process_line(input_text)
if __name__ == "__main__":
main()
Functions
def get_exporter(exporter_name: str) ‑> IExporter
-
Expand source code
def get_exporter(exporter_name: str) -> IExporter: exporter_name = exporter_name.lower().strip() if exporter_name == "json": return JsonExporter() raise ValueError(f"Unknown exporter '{exporter_name}'")
def main()
-
Expand source code
def main(): freq_list = JapaneseFrequencyList() while True: input_text = "" try: input_text = input("Command> ") except EOFError: print() break except KeyboardInterrupt: print() break if input_text == "q": break elif input_text == "c": print(f"Cleared frequency list with {len(freq_list)} entries") freq_list.clear() elif input_text == "p": print(freq_list) elif input_text == "s": for word in freq_list.get_most_frequent(): print(word) elif input_text.startswith("s "): word = input_text[2:] if word in freq_list: words = freq_list[word] for word in words: print(word) print(word.word.feature) print(word.word.pos) else: print(f"Word '{word}' not found in frequency list") elif input_text.startswith("e "): exporter_name = input_text.split(" ")[1] exporter = None try: exporter = get_exporter(exporter_name) except ValueError as e: print(e) continue print(exporter.export(freq_list)) elif input_text.startswith("i "): input_text = input_text[2:] for word in freq_list.parse_line(input_text): print(word) else: freq_list.process_line(input_text)