Синтаксический анализатор даты/времени естественного языка для.NET? [закрытый]

Хорошо, я понял это. Я передаю свои параметры через раздел свойств XML-файла:

<Properties>
    <Property name="Param1">Hello-World</Property>
</Properties>

Затем в моем настраиваемом приложении я делаю следующее:

LoggerContext context = (LoggerContext) LogManager.getContext(false);
Configuration configuration = context.getConfiguration();
String param1= configuration.getStrSubstitutor().getVariableResolver().lookup("Param1");        
26
задан palmsey 22 August 2008 в 22:45
поделиться

7 ответов

Мы разработали точно, что Вы ищете на внутреннем проекте. Мы думаем о том, чтобы обнародовать это, если существует достаточная потребность в нем. Смотрите на этот блог для получения дополнительной информации: http://precisionsoftwaredesign.com/blog.php .

Не стесняются связываться со мной, если Вам интересно: contact@precisionsoftware.us

Эта библиотека является теперь проектом SourceForge. Страница в:

http://www.SourceForge.net/p/naturaldate

блок находится в разделе загрузок, и источник доступен с Подвижным.

11
ответ дан 28 November 2019 в 07:33
поделиться

Я не делаю, но существует порт Java, названный jchronic. Если ничто иное, это могло бы обеспечить, хорошая атака указывают для Вашего собственного. Или возможно Вы могли использовать полуавтоматический Java для переводчика C# как Разветвитель , чтобы помочь перевести его. (Или что-то лучше, если кто-либо знает о чем-нибудь.)

Хорошо, другая возможная авеню: Вы могли использовать хронический код с помощью IronRuby?

5
ответ дан 28 November 2019 в 07:33
поделиться

@Blair Conrad - Хорошие идеи! Я пытался получить Хроническое выполнение под IronRuby, но имел некоторые проблемы с зависимостями - я не знаю, что это готово все же.

я нашел проект на Codeplex ( DateTimeEnglishParser), который пытается сделать то же самое. Это еще не обрабатывает годы или время, но это - хорошее начало. Я работал над проектом немного и внес патч для лучше обработки записанных чисел.

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

4
ответ дан 28 November 2019 в 07:33
поделиться

Был подобный поток ранее, и он дал ссылку на библиотеку по CodeProject, который, кажется, делает то, что Вы хотите: http://www.codeproject.com/KB/edit/dateparser.aspx , но к сожалению библиотека, кажется, записана в MFC, таким образом, необходимо было бы сделать DLL из него и затем назвать его из программы.NET.

3
ответ дан 28 November 2019 в 07:33
поделиться

Я не знаю один, но это походило на прохладную проблему, таким образом, вот мой сильный удар в нем (VB.NET):

Private Function ConvertDateTimeToStringRelativeToNow(ByVal d As DateTime) As String
    Dim diff As TimeSpan = DateTime.Now().Subtract(d)
    If diff.Duration.TotalMinutes < 1 Then Return "Now"

    Dim str As String
    If diff.Duration.TotalDays > 365 Then
        str = CInt(diff.Duration.TotalDays / 365).ToString() & " years"
    ElseIf diff.Duration.TotalDays > 30 Then
        str = CInt(diff.TotalDays / 30).ToString() & " months"
    ElseIf diff.Duration.TotalHours > 24 Then
        str = CInt(diff.Duration.TotalHours / 24) & " days"
    ElseIf diff.Duration.TotalMinutes > 60 Then
        str = CInt(diff.Duration.TotalMinutes / 60) & " minutes"
    Else
        str = CInt(diff.Duration.TotalMinutes).ToString() & " minutes"
    End If
    If str.StartsWith("1") Then str = str.SubString(0, str.Length - 1)
    If diff.TotalDays > 0 Then
        str &= " ago"
    Else
        str &= " from now"
    End If
    Return str
End Function

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

2
ответ дан 28 November 2019 в 07:33
поделиться

Burton: Я думаю, что он имел в виду другой путь, по крайней мере, от примера на связанной странице:

  Chronic.parse('tomorrow')
    #=> Mon Aug 28 12:00:00 PDT 2006

  Chronic.parse('monday', :context => :past)
    #=> Mon Aug 21 12:00:00 PDT 2006

  Chronic.parse('this tuesday 5:00')
    #=> Tue Aug 29 17:00:00 PDT 2006

я думал, что попробую его также, пока я не понял! (хорошая реализация, хотя)

1
ответ дан 28 November 2019 в 07:33
поделиться

Палмси, совсем недавно у меня было такое же требование, поэтому я пошел дальше и написал простой синтаксический анализатор. Это не самый лучший код, но он будет обрабатывать такие вещи, как:

«Сегодня в 14:00» «Вторник в 14:00 - 15 июля 2010 г. в 2:00» «Предыдущий год в 2 часа ночи - Завтра в 14:30» «18 июля 2010 г., 14:45»

Заклеил его на codeplex, так как, возможно, кому-то это пригодится. Проверьте это: http://timestamper.codeplex.com/

3
ответ дан 28 November 2019 в 07:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: