Sudheer Kumar Tiwari Ответов: 2

Извлеките часть даты только из английского предложения


Как извлечь часть даты только из английского предложения.
Некоторые сценарии

Есть ли какой-нибудь праздник 19-02-2012
Есть ли какой-нибудь праздник 19/02/2012
Есть ли какой-нибудь праздник на 19.02.2012
Есть ли какой-нибудь праздник на 2012/02/19
Есть ли какой-нибудь праздник на 02-19-2012
Есть ли какой-нибудь праздник 19 февраля 2017 года
Есть ли какой-нибудь праздник 19 февраля 2017 года
Есть ли какой-нибудь праздник 19 февраля 2017 года
Есть ли какой-нибудь праздник 19 февраля 2017 года
Есть ли какой-нибудь праздник 19 февраля
Есть ли какой-нибудь праздник 19 февраля

Для этих всех предложений ожидаемый результат должен быть в формате даты
День-19
Месяц-02
Год -2017


Что я уже пробовал:

Мы использовали регулярные выражения [^]

но не в состоянии охватить все случаи.

Mehdi Gholam

Просто сделайте другое регулярное выражение для всех случаев.

Sudheer Kumar Tiwari

Спасибо Мехди,

Я надеюсь, что это не очень хороший подход. Мне нужно общее решение. Пусть вы знаете о любом парсере, кроме Стэнфордского и лексического. Это мы можем использовать.

Sinisa Hajnal

Это хороший подход, и он является общим. Вы никогда не сможете полностью охватить естественный язык регулярными выражениями. Но если вы разделите разные случаи, вы сделаете его более читаемым и легко узнаваемым для любого будущего разработчика. Еще один вариант-использовать Microsoft Luis (или любого другого бота), который может быть обучен на шаблонах предложений.

Peter_in_2780

Посмотри на Нетти. Есть онлайн-сайты, чтобы играть с ним, и РЕПО github.

Nick_3141592654

Вам нужно только справиться с предложением вида "есть ли праздник на & lt;дату>"?

Если это так, то у вас есть шанс достичь этого. Если нет, то у тебя нет шансов. Например, предложение "я спросил Эйприл, может ли она взять отпуск 14 июля, но она сказала"нет", потому что это день рождения ее сестры Джун".

2 Ответов

Рейтинг:
1

Bhola Ram Sahu

Может быть, есть какой-то инструмент, но если вы хотите сделать это вручную, вы должны использовать несколько небольших шагов.

1. найдите дату в предложении.
2. Сделайте подстроку предложения как имеющую только часть даты.
3. поскольку даты находятся в разных форматах, вы должны изменить различные критерии поиска для разных форматов дат. Вы можете найти по названию года или месяца или просто использовать тот же формат даты, если это возможно.

String s1 = "Is there is any holiday on 19-Feb-2012";
int i = s1.IndexOf("Feb")
String date = s1.Substring(i-3, 11);


Sudheer Kumar Tiwari

Спасибо Бхола Рам Саху,
На самом деле я ищу какое-то общее решение. Что он должен работать со всеми форматами дат. Для этого я пишу библиотеку для обработки всех частей дат с помощью Regx и некоторого парсера.

Bhola Ram Sahu

Вы можете попробовать решение 2 с помощью Midi_Mick. Это работает. Я попробовал. Это определенно удовлетворит вашим требованиям

Рейтинг:
0

Midi_Mick

У меня была похожая проблема, и в конце концов я придумал регулярное выражение, которое сделало свое дело. См. мой QA здесь[^] (Решение 4 делает свое дело)