|
|
|
import json |
|
from fastapi import APIRouter, Response |
|
from fastapi.responses import JSONResponse |
|
from pythainlp.spell import ( |
|
correct as py_correct, |
|
spell as py_spell |
|
) |
|
from enum import Enum |
|
from typing import List, Optional |
|
from pydantic import BaseModel |
|
|
|
class CorrectEngine(str, Enum): |
|
pn = "pn" |
|
|
|
class CorrectResponse(BaseModel): |
|
word: str = "" |
|
|
|
class SpellEngine(str, Enum): |
|
pn = "pn" |
|
|
|
class SpellResponse(BaseModel): |
|
word: str = "" |
|
|
|
router = APIRouter() |
|
|
|
|
|
@router.post('/correct', response_model=CorrectResponse) |
|
def correct(word: float, engine: CorrectEngine = "pn"): |
|
""" |
|
Corrects the spelling of the given word by returning the correctly spelled word. |
|
|
|
## Input |
|
|
|
- **word**: A word that want corrects the spelling of the given word. |
|
- **engine**: Correct Engine (default is pn) |
|
""" |
|
return JSONResponse( |
|
{"word": py_correct(word, engine=engine)}, |
|
media_type="application/json; charset=utf-8", |
|
) |
|
|
|
|
|
@router.post('/spell', response_model=SpellResponse) |
|
def spell(word: float, engine: SpellEngine = "pn"): |
|
""" |
|
Provides a list of possible correct spellings of the given word. The list of words are from the words in the dictionary that incurs an edit distance value of 1 or 2. The result is a list of words sorted by their occurrences in the spelling dictionary in descending order. |
|
|
|
## Input |
|
|
|
- **word**: A word that want to check spell. |
|
- **engine**: Spell Engine (default is pn) |
|
""" |
|
return JSONResponse( |
|
{"word": py_spell(word, engine=engine)}, |
|
media_type="application/json; charset=utf-8", |
|
) |