2014-07-04 18 views
6

Passeggiando per il Go-Tour si ha una buona impressione che Unicode sia supportato immediatamente.Come faccio a contare le parole giapponesi in Go-lang

Le parole di conteggio che non utilizzano separatori standard come spazi appositamente in giapponese e cinese sono state dolorose in altri linguaggi di programmazione (php), quindi, curioso di sapere se è possibile contare le parole scritte in lingua giapponese (ad es. : katakana) usando il linguaggio di programmazione Go.

Se sì, come?

+7

È possibile contare i simboli, aight. Ma contare le parole in assenza di separatori? Non penso che questo sia un lavoro di una lingua o del suo runtime. –

+0

Non conosco il giapponese/il cinese, ma non usano alcun tipo di separatore? – OneOfOne

+2

@OneOfOne bene hanno spazi, virgole, anche ... ma il problema è ** こ れ は 私 の 前 前 で り, ** sembra due parole ma ci sono 10 parole in si traduce approssimativamente in _Questo è il mio nome, e ne sono fiero._ –

risposta

1

La risposta è . È "possibile contare le parole scritte in lingua giapponese (es: katakana) usando Go-programming language". Ma prima devi migliorare la tua domanda.

Qualcuno che legge la frase, "separatori standard come spazi", potrebbe pensare che il conteggio delle parole sia un'operazione ben definita. Non lo è, anche per le lingue come l'inglese. Nella frase "testing 1 2 3 testing", la stringa "1 2 3" rappresenta una parola o tre o zero? La risposta è diversa per "testare 123 test"? Quante parole ci sono nella frase "testing test"?

Qualcuno potrebbe anche credere che la lingua giapponese abbia un concetto di "parole", analogo all'inglese, ma con una convenzione sintattica diversa. Non è corretto, per molte lingue, come il giapponese, il cinese scritto e il tailandese.

Quindi, è necessario innanzitutto migliorare la domanda definendo quali sono le "parole", nel testo di testo latino, per le lingue come l'inglese.

Vuoi una semplice definizione lessicale, basata sulla presenza di caratteri di spaziatura? Quindi considera l'utilizzo di Unicode TR 29 Version 4.1.0 - Text Boundaries, Section 4 Word Boundaries. Definisce "limiti di parole" in termini di espressioni regolari e proprietà di caratteri Unicode. Lo standard settore della localizzazione GMX-V, Word Boundaries section, utilizza TR 29.

Una volta che hai la tua definizione, sono fiducioso che si sarebbe in grado di attuarlo utilizzando i pacchetti di andare come unicode e text/scanner. Non l'ho fatto io stesso Da una rapida occhiata all'elenco dei pacchetti ufficiali, sembra che i pacchetti esistenti non abbiano un'implementazione TR 29. Ma la tua domanda chiede se è "possibile", non "già implementata da un pacchetto ufficiale".

Quindi, per il giapponese: vuoi una semplice definizione lessicale di "parola"? Se è così, Unicode TR 29 lo fornisce. Dicono,

Per Thai, Lao, Khmer, Myanmar e altri script che in genere non utilizzano spazi tra le parole, una buona implementazione non dovrebbe dipendere dalla specifica del limite di parola predefinita. Dovrebbe utilizzare un meccanismo più sofisticato, come richiesto anche per la rottura della linea. Gli script ideografici come giapponese e cinese sono ancora più complessi. Dove il testo di Hangul è scritto senza spazi, lo stesso vale. Tuttavia, in assenza di un meccanismo più sofisticato, le regole specificate in questo allegato forniscono un valore predefinito ben definito.

Se si desidera una definizione linguistica sofisticato di "parola" nel contesto giapponese, allora avete bisogno di iniziare a considerare le questioni sollevate dalla @Jhilke Dai, Sergio Tulentsev, e gli altri collaboratori. Dovrai progettare le tue specifiche di "parola". Quindi dovrai implementarlo. Sono fiducioso che non troverete un'implementazione del genere in un pacchetto Go ufficiale a partire da luglio 2014. Tuttavia, sono anche sicuro che se è possibile progettare una specifica chiara, è "possibile" implementarla in Go.

Ora: quante parole ci sono in questa risposta? Come li hai contati?

Problemi correlati