Sto tentando di trovare tag (parole chiave) per una ricetta analizzando una lunga stringa di testo. Il testo contiene gli ingredienti della ricetta, le indicazioni e una breve descrizione.Tecnica per rimuovere le parole comuni (e le loro versioni plurali) da una stringa
Quale pensi che sarebbe il modo più efficace per rimuovere parole comuni dall'elenco di tag?
Con parole comuni, voglio dire parole come: 'la', 'a', 'c'e', 'loro' ecc
Ho 2 metodologie che posso usare, che pensi che sia più efficiente in termini di velocità e sai di un modo più efficiente che potrei fare?
Metodologia 1:
- determinare il numero di volte in cui si verifica ogni parola (utilizzando le collezioni della biblioteca)
- Avere una lista di parole comuni e rimuovere tutte le 'parole comuni' dall'oggetto Collection tentando di cancellare quella chiave dall'oggetto Collection se esiste.
- Pertanto la velocità sarà determinata dalla lunghezza della variabile delims
import collections from Counter
delim = ['there','there\'s','theres','they','they\'re']
# the above will end up being a really long list!
word_freq = Counter(recipe_str.lower().split())
for delim in set(delims):
del word_freq[delim]
return freq.most_common()
Metodologia 2:
- Per parole comuni che possono essere plurale, osservare ogni parola della stringa ricetta, e controllare se contiene parzialmente la versione non plurale di una parola comune. Per esempio; Per la stringa "There's a test" controlla ogni parola per vedere se contiene "there" ed eliminala se lo fa.
delim = ['this','at','them'] # words that cant be plural
partial_delim = ['there','they',] # words that could occur in many forms
word_freq = Counter(recipe_str.lower().split())
for delim in set(delims):
del word_freq[delim]
# really slow
for delim in set(partial_delims):
for word in word_freq:
if word.find(delim) != -1:
del word_freq[delim]
return freq.most_common()
Non posso darti una risposta completa qui, ma volevo menzionare qualcosa che potrebbe aiutarti. Quando si esegue un qualsiasi tipo di analisi testuale, in genere si desidera essere in grado di trattare pluralizzazioni, coniugazioni e altre trasformazioni simili a quelle relative alla stessa "parola". Ad esempio: puoi considerare delimit, delimiti, delimitati, delimitatori, delimitatori ... come gli stessi. Questo processo è chiamato "arginamento" e ci sono una serie di algoritmi ben studiati, con esempi tratti da una varietà di linguaggi di programmazione, che tenteranno di farlo per voi. In bocca al lupo! Vorrei poter essere di più aiuto. – soundslikeneon
In realtà, consiglierei praticamente il contrario. Se l'intento è puramente di "rimuovere" le parole "comuni" predefinite, vorrei semplicemente creare l'elenco completo, completo di tutte le varianti di ogni parola che si desidera rimuovere. Non preoccuparti di quali parole sono plurali di cui. Molto più semplice/più veloce/meno soggetto a errori. –