2009-07-22 13 views
9

Sto cercando un modo per determinare automaticamente il linguaggio naturale utilizzato da una pagina del sito web, dato il suo URL.Determina automaticamente il linguaggio naturale di una pagina di un sito Web dato il suo URL

In Python, una funzione del tipo:

def LanguageUsed (url): 
    #stuff 

che restituisce un identificatore di lingua (ad esempio 'it' per l'inglese, 'jp' per il giapponese, ecc ...)

Sintesi dei risultati: Ho una soluzione ragionevole che funziona in Python usando code from the PyPi for oice.langdet. Fa un lavoro decente nel discriminare l'inglese rispetto al non inglese, che è tutto ciò di cui ho bisogno al momento. Nota che devi recuperare il codice html usando urllib Python. Inoltre, oice.langdet è una licenza GPL.

Per una soluzione più generale che utilizza Trigram in Python come altri hanno suggerito, vedere questo Python Cookbook Recipe from ActiveState.

L'API di Google Natural Language Detection funziona molto bene (se non il migliore che ho visto). Tuttavia, è Javascript e il loro TOS vieta di automatizzare il suo utilizzo.

risposta

8

Questo di solito si ottiene utilizzando i modelli di n-grammo. È possibile trovare here un identificatore di linguaggio all'avanguardia per Java. Se hai bisogno di aiuto per convertirlo in Python, basta chiedere. Spero che sia d'aiuto.

1

nltk potrebbe aiutare (se si deve scendere a occuparsi del testo della pagina, cioè se le intestazioni e l'url stesso non determinano la lingua sufficientemente bene per i propri scopi); Non penso che NLTK offra direttamente una funzione "dimmi in quale lingua questo testo sia inserito" (anche se NLTK è grande e in continua crescita, quindi potrebbe effettivamente averlo), ma puoi provare ad analizzare il testo dato in base a vari possibili lingue naturali e verificare quali danno l'analisi più sensata, set di parole, & c, secondo le regole per ogni lingua.

0

Non esiste un metodo generale che funzioni esclusivamente sugli URL. Puoi controllare lo top-level domain per avere un'idea e cercare porzioni dell'URL che potrebbero essere indicative di una lingua (come "en" o "es" tra due barre), e presumere che tutto ciò che è sconosciuto è in inglese, ma non lo è t una soluzione perfetta.

Per quanto ne so, l'unico modo generale per determinare il linguaggio naturale utilizzato da una pagina è quello di afferrare il testo della pagina e controllare alcune parole comuni in ciascuna lingua. Ad esempio, se "a", "an" e "il" appaiono più volte nella pagina, è probabile che includa testo in inglese; "el" e "la" potrebbero suggerire spagnolo; e così via.

3

Non c'è nulla circa l'URL stesso che indicherà la lingua.

Un'opzione consisterebbe nell'utilizzare uno natural language toolkit per provare a identificare la lingua in base al contenuto, ma anche se è possibile ottenere il funzionamento della parte NLP, sarà piuttosto lento. Inoltre, potrebbe non essere affidabile. Ricordate, la maggior parte degli agenti utente passano qualcosa come

Accept-Language: en-US 

con ogni richiesta, e molte grandi siti web serviranno contenuti diversi in base a tale intestazione. I siti più piccoli saranno più affidabili perché non presteranno attenzione alle intestazioni linguistiche.

È anche possibile utilizzare la posizione del server (vale a dire in quale paese si trova il server) come proxy per la lingua utilizzando GeoIP.Ovviamente non è perfetto, ma è molto meglio che usare il TLD.

+0

geolocalizzazione è assolutamente inutile. Il mondo ha molti luoghi in cui coesistono più lingue. E i siti Web possono anche presentare più lingue –

+0

Tutto ciò che ho detto è che è meglio di TLD, che alcune persone suggeriscono, e ho affrontato il problema di più lingue. – tghw

3

È possibile provare il rilevamento basato su ngram.

TextCat DEMO (LGPL) sembra funzionare piuttosto bene (riconosce quasi 70 lingue). C'è una porta python fornita da Thomas Manginhere usando lo stesso corpus.

Modifica: TextCat competitors page fornisce anche alcuni collegamenti interessanti.

Edit2: Mi chiedo se fare un wrapper Python per http://www.mnogosearch.org/guesser/ sarebbe difficile ...

Problemi correlati