Né Stemmer o lemmatizer si può ottenere da greatest
->great
:
>>> from nltk.stem import WordNetLemmatizer
>>> from nltk.stem import WordNetLemmatizer, PorterStemmer
>>> porter = PorterStemmer()
>>> wnl = WordNetLemmatizer()
>>> greatest = 'greatest'
>>> porter.stem(greatest)
u'greatest'
>>> wnl.lemmatize(greatest)
'greatest'
>>> greater = 'greater'
>>> wnl.lemmatize(greater)
'greater'
>>> porter.stem(greater)
u'greater'
Ma sembra che si può fare uso di alcune belle proprietà della insieme di tag PennTreeBank per arrivare da greatest -> great
:
>>> from nltk import pos_tag
>>> pos_tag(['greatest'])
[('greatest', 'JJS')]
>>> pos_tag(['greater'])
[('greater', 'JJR')]
>>> pos_tag(['great'])
[('great', 'JJ')]
Proviamo un pazzo sistema basato su regole, partiamo da greatest
:
>>> import re
>>> word1 = 'greatest'
>>> re.sub('est$', '', word1)
'great'
>>> re.sub('est$', 'er', word1)
'greater'
>>> pos_tag([re.sub('est$', '', word1)])[0][1]
'JJ'
>>> pos_tag([re.sub('est$', 'er', word1)])[0][1]
'JJR'
>>> word1
'greatest'
Ora che sappiamo che possiamo costruire il nostro piccolo superlativo stemmer/lemmatizer/tail_substituter, scriviamo una regola che dice se una parola dà un tag POS superlativo e il nostro tail_substituter
ci dà JJ quando ci deriva e JJR quando convertiamo, possiamo tranquillamente dire che la forma comparativa e la base della parola può essere facilmente ottenuto con la nostra tail_substituter
:
>>> if pos_tag([word1])[0][1] == 'JJS' \
... and pos_tag([re.sub('est$', '', word1)])[0][1] == 'JJ' \
... and pos_tag([re.sub('est$', 'er', word1)])[0][1] == 'JJR':
... comparative = re.sub('est$', 'er', word1)
... adjective = re.sub('est$', '', word1)
...
>>> adjective
'great'
>>> comparative
'greater'
Ora che si ottiene da greatest -> greater -> great
. Da great -> best
è un po 'strano, dal momento che lessicalmente non sono correlati anche se il loro parente relativo alla semantica sembra correlato.
quindi penso che sarebbe soggettivo dire che great -> best
è una trasformazione valida
Lemmatize, non staminali. Inoltre, potresti approfondire "quale tavolo ... senso?" –
Probabilmente il più grande può essere distribuito da un tagger di parte della giuria, vedere JJ, JJR, JJS qui https://gate.ac.uk/sale/tao/splitap7.html#x39-802000G. Come un suggerimento davvero inverosimile, è possibile esaminare le parole d'ordine: https://code.google.com/p/word2vec/ Le parole di chiusura non sono sinonimi, ma forse la regolazione del modello e la formazione sui dati corretti potrebbero generare sinonimi . Oppure ottieni l'intersezione tra i risultati del thesaurus e i gruppi di parole. – Yasen