Sto usando il pattern python per ottenere la forma singolare dei nomi inglesi.Un buon modo per aggiungere i termini al pattern python singularize
In [1]: from pattern.en import singularize
In [2]: singularize('patterns')
Out[2]: 'pattern'
In [3]: singularize('gases')
Out[3]: 'gase'
sto risolvendo il problema nel secondo esempio definendo
def my_singularize(strn):
'''
Return the singular of a noun. Add special cases to correct pattern generic rules.
'''
exceptionDict = {'gases':'gas','spectra':'spectrum','cross':'cross','nuclei':'nucleus'}
try:
return exceptionDict[strn]
except:
return singularize(strn)
C'è un modo migliore per fare questo, per esempio aggiungere alle regole del pattern o rendere lo exceptionDict
in qualche modo interno al pattern?
Come puoi aspettarti di prendere tutte le eccezioni nella lingua inglese (parole come nuclei)? Stai usando un numero finito di parole come input e sai tutte loro? Non potrai arrivare da nessuna parte cercando di definire tutte le eccezioni di parole, ti posso garantire. –
Sì, non stavo pensando di cogliere tutte le eccezioni. Tuttavia, il mio corpus è limitato alla letteratura scientifica, che potrebbe renderlo più facile. Immagino che la domanda sia: il pattern ha già un elenco di eccezioni da qualche parte, in modo che io possa aggiungere a questo, invece della mia funzione? – nikosd
perché non usare qualcosa come un lemmatizzatore ?? – shyamupa