python 2.7 - spanish - ¿Cómo probar si una palabra está en singular o no en python?
wordnet python (2)
Asumiendo que quiere una solución en inglés, puede hacer algo similar a la solución de 2er0 un poco más directamente con pattern-en :
from pattern.en import singularize
def isplural(pluralForm):
singularForm = singularize(pluralForm)
plural = True if pluralForm is not singularForm else False
return plural, singularForm
nounls = [''geese'', ''mice'', ''bars'', ''foos'', ''foo'',
''families'', ''family'', ''dog'', ''dogs'']
for pluralForm in nounls:
isp, singularForm = isplural(pluralForm)
print pluralForm, singularForm, isp
que salidas
geese goose True
mice mouse True
bars bar True
foos foo True
foo foo False
families family True
family family False
dog dog False
dogs dog True
la única diferencia en el resultado entre la solución de 2er0 y esto es
foos foo True
ya que su solución emite False
, como señaló, ya que foos
no está en wordnet (y no es una palabra en inglés en absoluto).
Estoy tratando de ver si una palabra está en forma singular o en plural usando nltk pos_tag. Pero los resultados no son precisos.
Entonces, ¿necesito una forma de encontrar cómo se puede obtener si una palabra está en forma singular o en plural? además, lo necesito sin usar ningún paquete de Python.
Para el inglés, cada palabra debe de alguna manera tener un lema raíz donde la pluralidad predeterminada es singular.
Suponiendo que solo tiene sustantivos en su lista, puede intentar esto:
from nltk.stem import WordNetLemmatizer
wnl = WordNetLemmatizer()
def isplural(word):
lemma = wnl.lemmatize(word, ''n'')
plural = True if word is not lemma else False
return plural, lemma
nounls = [''geese'', ''mice'', ''bars'', ''foos'', ''foo'',
''families'', ''family'', ''dog'', ''dogs'']
for nn in nounls:
isp, lemma = isplural(nn)
print nn, lemma, isp
Tendrá un problema cuando word esté fuera de wordnet , luego tendrá que usar un clasificador sofisticado o máquinas de estados finitos fuera de NLTK
.