Dato un blocco di testo che è noto per essere cinese e codificato in UTF-8, c'è un modo per determinare se è semplificato o tradizionale?Riconoscimento del testo come semplificato rispetto al cinese tradizionale
risposta
Non so se funzionerà, ma proverei ad usare iconv per vedere se si tradurrà correttamente tra i set di caratteri, confrontando i risultati della stessa conversione con // TRANSLIT e // IGNORE. Se i due risultati corrispondono, la conversione del set di caratteri non ha incontrato caratteri che non riescono a tradurre, quindi dovresti avere una corrispondenza.
$test1 = iconv("UTF-8", "big5//TRANSLIT", $text);
$test2 = iconv("UTF-8", "big5//IGNORE", $text);
if ($test1 == $test2) {
echo 'traditional';
} else {
$test3 = iconv("UTF-8", "gb2312//TRANSLIT", $text);
$test4 = iconv("UTF-8", "gb2312//IGNORE", $text);
if ($test3 == $test4) {
echo 'simplified';
} else {
echo 'Failed to match either traditional or simplified';
}
}
Dal big5
e gb2312
omettere un bel paio di varianti di uso comune che sono presenti in Unicode, il codice si affidano a corrispondenza esatta tra le modalità translit
e ignore
fallirebbe in un bel po 'di normali casi di utilizzo: fallirebbe per identificare 説話
come cinese tradizionale nonostante 説
essere una variante comune a Hong Kong per 說
che viene utilizzato in big5
.
una semplice correzione è di farlo in un modo sfocata:
$test1 = iconv("UTF-8", "big5//IGNORE", $text);
$test2 = iconv("UTF-8", "gb2312//IGNORE", $text);
$len1 = mb_strlen($test1);
$len2 = mb_strlen($test2);
$len0 = mb_strlen($text) * 0.8; // threshold
if ($len1 > $len2 && $len1 > $len0) {
return 'Likely Traditional';
}
if ($len2 > $len1 && $len2 > $len0) {
return 'Likely Simplified';
}
return 'Could not identify';
- 1. Cinese semplificato e tradizionale rispetto alle regioni
- 2. Abilitazione dell'input cinese semplificato
- 3. Rileva se il carattere è semplificato o il carattere tradizionale cinese
- 4. La mia app per Android dovrebbe essere il cinese semplificato o tradizionale?
- 5. Riconoscimento calligrafico cinese
- 6. Blocco del programma SystemVerilog rispetto al banco di prova tradizionale
- 7. NewSQL rispetto all'ottimizzazione/sharding tradizionale
- 8. Il futuro dello sviluppo web (RIA rispetto al tradizionale HTML)
- 9. Visualizzazione della variante locale per il cinese semplificato
- 10. Stanford POS Tagger non codifica testo cinese
- 11. Riconoscimento del testo da un'immagine in delphi
- 12. jquery area di testo auto-crescita rispetto al testo iniziale
- 13. Preelaborazione delle immagini per il riconoscimento del testo
- 14. posizione del cursore rispetto al Application
- 15. come troncare il testo rispetto all'altezza div?
- 16. Invio di argomenti al selettore di inizializzazione del riconoscimento gestuale?
- 17. Assegnazione del colore del testo al testo in edittext
- 18. Entity Framework e database semplificato
- 19. riconoscimento caratteri cinesi con Tesseract OCR
- 20. Testo sottolineato in CSS dove la sottolineatura ha un peso inferiore rispetto al testo?
- 21. Android - Come allineare un centro di immagine rispetto al TextView
- 22. Riconoscere un personaggio per essere cinese e ottenere fonetica cinese "pinyin" da caratteri semplificati?
- 23. Riconoscimento testo scritto a mano con javascript
- 24. Accesso al servizio di riconoscimento vocale di Google
- 25. EntityFramework aggiornare o inserire testo cinese o non inglese
- 26. Framework/guida al riconoscimento immagini- Realtà aumentata
- 27. android analytics v4 più semplificato
- 28. Come implementare la ricerca full-text in cinese su PostgreSQL?
- 29. Utilizzo del metodo statico rispetto al metodo dell'oggetto
- 30. Captcha per giapponese e cinese?
interessante, grazie! Sembra che funzioni sicuramente, anche se molti testi tornano come "nessuno dei due" (esempio: "聲音 鳥 樹葉 話 説話 細 又 輕 蝴蝶 請 只有 得 聼))"). Qualche idea? Dovevo anche fare '@ iconv' per le 2 chiamate 'TRANSLIT' per sopprimere gli errori. – philfreo
Ci sono alcuni caratteri z-varianti che non si trovano nel GB-2312 di base, ma sono in GB-18030. Prova ''gb18030'' anziché'' gb2312''. O se il tuo input è orientato a Windows potresti preferire "cp936" (e "cp950" invece di "big5"). – bobince
Ho effettuato lo scambio in 'gb18030' e tutti i miei dati di test sono stati riconosciuti. (Non posso essere sicuro della precisione però). Grazie! – philfreo