Как я могу определить, является ли данная строка в файле правильным английским предложением? - PullRequest
3 голосов
/ 08 мая 2011

Мне нужно определить, является ли данная «строка» в файле английским предложением или нет. Я использую Python. Примерный ответ подойдет. Я понимаю, что это вопрос НЛП, но есть ли легкий инструмент, который дает разумное приближение? Я не хочу использовать для этого полноценный инструментарий НЛП, хотя, если это единственный способ, это нормально.

Если ответом является инструментарий НЛП, то о чем я читаю, это Инструментарий естественного языка . Если у кого-нибудь есть простой пример того, как найти удобное предложение, укажите мне на него.

Ответы [ 5 ]

4 голосов
/ 08 мая 2011

Существует библиотека Python NLTK , которая используется для обработки естественных языков.

Существует также language-detection-with-python-nltk , котораяописывает процесс его использования в целях определения языка ввода текста.

Надеемся, что это поможет.

2 голосов
/ 08 мая 2011

Возможно, вы ищете Punkt Tokenizer из библиотеки nltk , которая может предоставить вам английские предложения из данного текста.Затем вы можете воздействовать на предложения, выполнив проверку грамматика (на что указывает Акрон)

1 голос
/ 08 мая 2011

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

Конечно, хотя Mechanical Turk имеет API веб-сервисов и, следовательно, может использоваться из Python, он не будет работать в режиме реального времени.

0 голосов
/ 04 ноября 2011

Вы можете использовать Python Преподобный . В нем меньше 400 строк кода. Посмотрите, как вы можете его использовать:

>>> from thomas import Bayes

>>> guesser = Bayes()

>>> guesser.train("en" u"a about above after again against all am an and any are aren't as at be because been before being below between both but by can't cannot could couldn't did didn't do does doesn't doing don't down during each few for from further had hadn't has hasn't have haven't having he he'd he'll he's her here here's hers herself him himself his how how's i i'd i'll i'm i've if in into is isn't it it's its itself let's me more most mustn't my myself no nor not of off on once only or other ought our ours    ourselves out over own same shan't she she'd she'll she's should shouldn't so some such than that that's the their theirs them themselves then there there's these they they'd they'll they're they've this those through to too under until up very was wasn't we we'd we'll we're we've were weren't what what's when when's where where's which while who who's whom why why's with won't would wouldn't you you'd you'll you're you've your yours yourself yourselves")
>>> guesser.train("pt" u"último é acerca agora algmas alguns ali ambos antes apontar aquela aquelas aquele aqueles aqui atrás bem bom cada caminho cima com como comprido conhecido corrente das debaixo dentro desde desligado deve devem deverá direita diz dizer dois dos e ela ele eles em enquanto então está estão estado estar   estará este estes esteve estive estivemos estiveram eu fará faz fazer fazia fez fim foi fora horas iniciar inicio ir irá ista iste isto ligado maioria maiorias mais mas mesmo meu muito muitos nós não nome nosso novo o onde os ou outro para parte pegar pelo pessoas pode poderá    podia por porque povo promeiro quê qual qualquer quando quem quieto são saber sem ser seu somente têm tal também tem tempo tenho tentar tentaram tente tentei teu teve tipo tive todos trabalhar trabalho tu um uma umas uns usa usar valor veja ver verdade verdadeiro você")
>>> guesser.train("es" u"un una unas unos uno sobre todo también tras otro algún alguno alguna algunos algunas ser es soy eres somos sois estoy esta estamos estais estan como en para atras porque por qué estado estaba ante antes siendo ambos pero por poder puede puedo podemos podeis pueden fui fue fuimos fueron hacer hago hace hacemos haceis hacen cada fin incluso primero  desde conseguir consigo consigue consigues conseguimos consiguen ir voy va vamos vais van vaya gueno ha tener tengo tiene tenemos teneis tienen el la lo las los su aqui mio tuyo ellos ellas nos nosotros vosotros vosotras si dentro solo solamente saber sabes sabe sabemos sabeis saben ultimo largo bastante haces muchos aquellos aquellas sus entonces tiempo verdad verdadero verdadera     cierto ciertos cierta ciertas intentar intento intenta intentas intentamos intentais intentan dos bajo arriba encima usar uso usas usa usamos usais usan emplear empleo empleas emplean ampleamos empleais valor muy era eras eramos eran modo bien cual cuando donde mientras quien con entre sin trabajo trabajar trabajas trabaja trabajamos trabajais trabajan podria podrias podriamos podrian podriais yo aquel")

>>> guesser.guess(u'what language am i speaking')
>>> [('en', 0.99990000000000001)]
>>> guesser.guess(u'que língua eu estou falando')
>>> [('pt', 0.99990000000000001)]
>>> guesser.guess(u'en qué idioma estoy hablando')
>>> [('es', 0.99990000000000001)]

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

0 голосов
/ 08 мая 2011

То есть вы в основном хотите проверить грамматику в строке?

Может ли это быть полезным тогда?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...