?

Log in

No account? Create an account

Компьютерная лингвистика

Новостная лента www.solarix.ru

Previous Entry Share Next Entry
RASA, spacy, русский язык и NER
kelijah
После трех дней осады и борьбы, у меня заработала связка из текущей версии RASA и spacy (я взял готовые модели для русского языка, спасибо Юрию за помощь :) ).

Кроме того, я сделал конвертор для своего NER датасета в формат для обучения Spacy NER. После пары часов получилось дообучить спейсовский NER, взяв за основу код отсюда:

Sentence: "Сегодня неплохая погода."
Shape    Vocab    POS    Text      Lemma     Entity          Dep     Head
-------  -------  -----  --------  --------  --------------  ------  ------
Xxxxx    +        ADV    Сегодня   сегодня   когда: Сегодня  advmod  погода
xxxx     +        ADJ    неплохая  неплохой                  amod    погода
xxxx     +        NOUN   погода    погода                    ROOT    погода
.        +        PUNCT  .         .                         punct   погода



Затем получилось в своем custom action обработчике, настроенном на intent "прогноз_погоды", получить извлеченный entity:

class ActionHelloWorld(Action):

    def name(self) -> Text:
        return "action_weather"

    def run(self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:

        try:
            sinopsis_date = next(tracker.get_latest_entity_values(u'когда'), None)
            dispatcher.utter_message(u"Прогноз погоды на дату: {}".format(sinopsis_date))
        except:
            dispatcher.utter_message(u"Прогноз погоды - слот даты не найден")

        return []





В итоге получилось черновое решение с обработкой реплики "Какая погода будет завтра?":

Your input ->  какая погода будет завтра?                                                                                                    
Прогноз погоды на дату: завтра