Как я могу использовать SharpNLP, чтобы определить вероятность того, что строка текста является предложением?
Я написал небольшую программу на C#, которая собирает кучу слов в строку текста, и я хочу использовать NLP только для того, чтобы дать мне процентную вероятность того, что эта куча слов является предложением. Мне не нужны токены или пометки, все, что может быть в фоновом режиме, если это необходимо сделать. В моем проекте есть ссылки на OpenNLP и SharpEntropy, но я получаю сообщение об ошибке "Размеры массива превышают поддерживаемый диапазон". при их использовании, поэтому я также пытался использовать IKVM, созданный OpenNLP без резкой энтропии, но без документации, я не могу, кажется, обернуть голову вокруг правильных шагов, чтобы получить только процентную вероятность.
Любая помощь или направление будут оценены.
1 ответ
Я рекомендую 2 относительно простых меры, которые могут помочь вам классифицировать последовательность слов как предложение / не предложение. К сожалению, я не знаю, насколько хорошо SharpNLP справится. Более полные наборы инструментов существуют в Java, Python и C++ (LingPipe, Stanford CoreNLP, GATE, NLTK, OpenGRM, ...)
Вероятность языковой модели. Обучите языковую модель предложениям с маркерами начала и конца в начале / конце предложения. Вычислите вероятность вашей целевой последовательности для этой языковой модели. Грамматические и / или семантически значимые последовательности слов будут иметь более высокую оценку, чем случайные последовательности слов. Этот подход должен работать со стандартной моделью n-граммы, дискриминационной моделью условной вероятности или почти любым другим подходом моделирования языка. Но определенно начнем с базовой n-граммовой модели.
Вероятность дерева разбора: Аналогично, вы можете измерить внутреннюю вероятность восстановленной структуры группы избирателей (например, с помощью вероятностного синтаксического синтаксического анализа). Более грамматические последовательности (то есть, более вероятно, будут законченным предложением) будут отражены в более высоких внутренних вероятностях. Вероятно, вы получите лучшие результаты, если нормализуетесь по длине последовательности (то же самое может относиться и к подходу моделирования языка).
Я видел предварительные (но неопубликованные) результаты по твитам, которые, кажется, указывают на бимодальное распределение нормированных вероятностей - твиты, которые были оценены человеком как более грамматические, часто попадали в более высокий пик, а те, которые оценивались менее грамматически, группировались в более низкий., Но я не знаю, насколько хороши эти результаты в более широком или более формальном исследовании.