Risultati da 1 a 17 di 17

Discussione: Testo inglese o Italiano ?



  1. #1
    L'avatar di Master
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Macerata
    Età
    35
    Messaggi
    74
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    1

    Testo inglese o Italiano ?

    Buongiorno,

    ho delle celle in cui è contenuto del testo in Italiano oppure in inglese. Il testo può avere un contenuto vario.
    Cortesemente, ci sarebbe una funzione per stabilire se quel testo è in italiano o in inglese ?
    Ad esempio 0 Italiano, 1 Inglese.

  2. #2

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4019
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Ciao Master,
    non credo sia possibile far riconoscere se una parola sia inglese o italiana... a meno di non utilizzare due "file/fogli" dizionari (italiano e inglese) per poter effettuare un confronto.

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  3. #3
    L'avatar di Master
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Macerata
    Età
    35
    Messaggi
    74
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    1
    ok, grazie !

  4. #4

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1017
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    Citazione Originariamente Scritto da Master Visualizza Messaggio
    Buongiorno,

    ho delle celle in cui è contenuto del testo in Italiano oppure in inglese. Il testo può avere un contenuto vario.
    Cortesemente, ci sarebbe una funzione per stabilire se quel testo è in italiano o in inglese ?
    Ad esempio 0 Italiano, 1 Inglese.
    Una soluzione con VBA è facilmente implementabile, anche se più che per una Function (UDF) io propenderei per una Sub da richiamare quando serve.
    Però dovresti fornire maggiori informazioni sulla struttura del file ed il tipo di testi: allega un file di esempio che permetta di valutare meglio il problema.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  5. #5

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6800
    Versione Office
    2013
    Likes ricevuti
    720
    Likes dati
    165
    Si Marco ma come si fa a distinguere tra la parola inglese "pane" (che vuol dire pannello/lamina) dalla parola italiana "pane"?

    E di esempi simili se ne possono trovare anche altri cioè quando la parola inglese è "uguale" a quella italiana ovviamente con tutt'altro significato.

    Alfredo

  6. #6

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1017
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    Citazione Originariamente Scritto da alfrimpa Visualizza Messaggio
    Si Marco ma come si fa a distinguere tra la parola inglese "pane" (che vuol dire pannello/lamina) dalla parola italiana "pane"?
    Ciao Alfredo,

    io dalla richiesta di Master:
    è contenuto del testo in Italiano oppure in inglese. Il testo può avere un contenuto vario
    ho supposto che "testo" sia una frase e non una singola parola. Se così non è, cioè se stiamo parlando di singole parole, allora sono d'accordo con te ma, come tu stesso hai fatto notare giustamente, per certe parole non puoi stabilirlo nemmeno con l'intelletto umano.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  7. #7
    L'avatar di Master
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Macerata
    Età
    35
    Messaggi
    74
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    1
    Ecco un file di prova.

    grazie mille

    Andrea Buratti
    File Allegati File Allegati

  8. #8

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4019
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Ciao a tutti,

    @Master
    come suggerito da "scossa" (un saluto), se vuoi sapere ad esempio se il "testo" nella colonna D è italiano o inglese, potresti usare una UDF (funzione) che controlla la percentuale delle parole che finiscono con una consonante (ho preso come percentuale di riferimento il 30%).
    Se la percentuale è inferiore al 30% la funzione ti restituirà "Italiano", altrimenti "Inglese" (se la cella è vuota ti restituirà "Nessun Testo"):

    Codice: 
    Option Explicit
    
    
    Function ItaEng(ByVal Testo As String) As String
    Dim Suddividi() As String, Parole As Long, Consonanti As Long, Percentuale As Integer
    Dim Lettera As String, i As Integer
    
    
    If Testo <> "" Then
        Suddividi = Split(Testo, " ")
        Parole = UBound(Suddividi) + 1
        For i = 0 To Parole - 1
            Lettera = UCase(Right(Suddividi(i), 1))
            If Lettera <> "A" And Lettera <> "E" And Lettera <> "I" And _
            Lettera <> "O" And Lettera <> "U" Then
                Consonanti = Consonanti + 1
            End If
        Next i
        Percentuale = (Consonanti / Parole) * 100
        If Percentuale > 30 Then
            ItaEng = "Inglese"
        Else
            ItaEng = "Italiano"
        End If
    Else
        ItaEng = "Nessun Testo"
    End If
    
    
    End Function
    Per sapere ad esempio se il testo nella cella D2 è italiano o inglese, scriverai:

    =ItaEng(D2)

    Ti lascio file di esempio...
    File Allegati File Allegati

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  9. I seguenti 3 utenti hanno dato un "Like" a cromagno per questo post:


  10. #9

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7147
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2063
    Likes dati
    1300
    Complimenti Cromagno,
    forse la percentuale si potrebbe abbassare anche al 20%,
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  11. #10

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4019
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Citazione Originariamente Scritto da ges Visualizza Messaggio
    Complimenti Cromagno,
    forse la percentuale si potrebbe abbassare anche al 20%,
    Grazie ges,
    magari ci sono altri metodi più efficaci ma le consonanti sono la prima differenza sostanziale che mi è venuta in mente.

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  12. #11
    L'avatar di zio_tom
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Veneto
    Messaggi
    526
    Versione Office
    2010 - Win10
    Likes ricevuti
    64
    Likes dati
    17
    altre idee sono:

    visto che l'alfabeto italiano ha 21 lettere mentre quello inglese ne ha 25
    la ricerca di K J X Y può essere un ulteriore sistema

    come pure l'uso delle accentate
    abbastanza presente in italiano quasi assente in inglese

    la presenza di è (isolata), voce del verbo essere, abbastanza presente nei testi italiani, e mai presente in inglese
    quindi sarebbe la prima ricerca che farei e se la trovo è sicuramente italiano, poi via via le altre

    una strada è quella di ricercare in qualche sito le parole più usata nelle varie lingue, nel passato mi era capitato di imbatterci

  13. #12

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4019
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Citazione Originariamente Scritto da zio_tom Visualizza Messaggio
    altre idee sono:

    visto che l'alfabeto italiano ha 21 lettere mentre quello inglese ne ha 25
    la ricerca di K J X Y può essere un ulteriore sistema

    come pure l'uso delle accentate
    abbastanza presente in italiano quasi assente in inglese

    la presenza di è (isolata), voce del verbo essere, abbastanza presente nei testi italiani, e mai presente in inglese
    quindi sarebbe la prima ricerca che farei e se la trovo è sicuramente italiano, poi via via le altre

    una strada è quella di ricercare in qualche sito le parole più usata nelle varie lingue, nel passato mi era capitato di imbatterci
    Ciao zio_tom,
    si è vero (però ti sei dimenticato la "W") ma ritengo che comunque c'è sempre un margine di errore che non si può escludere (specialmente per testi corti)... ma includendo anche le tue osservazioni, il margine di errore potrebbe essere trascurabile :246:

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  14. #13

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1017
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    Ciao a tutti,

    ho visto che sono stati proposti diversi spunti per risolvere un problema che, se affrontato non nello specifico caso, ma in linea generale non è affatto banale.

    Avevo pensato anch'io all'uso di "marcatori" che permettano di identificare la lingua inglese, ad esempio "th", "ing ", "'s", "s ", "ght", "y", "w", "k", "exp", "ext".
    Il vantaggio sarebbe la velocità: anziché controllare le singole parole del testo (per testi lunghi si hanno centinaia di iterazioni del ciclo For...Next) si controllerebbe solo la presenza dei marcatori (iterazioni del ciclo For...Next prestabilite, pari al numero dei marcatori)
    Codice: 
    '---------------------------------------------------------------------------------------' Function : IngIta(arg1, [arg2])
    ' Author    : scossa
    ' Date      : 24/02/2016
    ' Purpose   : analizza la presenza di specifici marcatori all'interno della stringa
    '             Arg1: se sono presenti almeno 4 dei 10 marcatori
    '             viene restituito "Eng." altrimenti "Ita."
    '             Se Arg2 è 1 o VERO viene restituita una stringa più dettagliata
    '---------------------------------------------------------------------------------------
    '
    
    
    Function IngIta(ByVal sTesto As String, Optional ByVal bVerbatim As Boolean = False) As String
        
        Dim aTokens As Variant
        Dim nTokens As Long
        Dim aMarkers As Variant
        Dim vMarker As Variant
        Dim nMarkers As Long
        Dim nTotMarkers As Long
        Dim sRet As String
        
        On Error GoTo exitSub_
    
    
        aMarkers = Array("th", "ing ", "'s", "s ", "ght", "y", "w", "k", "exp", "ext")
        'aMarkers = Array("th", "ing ", "'s", "s ", "ght", "y", "w", "k", "exp", "ext", "ear", "ts")
        nTotMarkers = UBound(aMarkers) + 1
    
    
        aTokens = Split(sTesto, " ")
        nTokens = UBound(aTokens) + 1
        If sTesto <> "" Then
          nMarkers = 0
          For Each vMarker In aMarkers
            If InStr(1, sTesto, vMarker, vbTextCompare) > 0 Then
              nMarkers = nMarkers + 1
            End If
          Next
          If nMarkers > 3 Then
            sRet = "Eng. "
          Else
            sRet = "Ita."
          End If
        End If
        If bVerbatim Then sRet = sRet & " (" & nTokens & " parole: " & nMarkers & " marcatori su " & nTotMarkers & ")"
    exitSub_:
        If Err.Number <> 0 Then
          sRet = Err
        End If
        
        IngIta = sRet
    
    
    End Function
    se il numero di marcatori presenti è superiore ad una soglia (p.e. 4 presenti su 10 marcatori) allora il testo è in inglese ......

    Ma questa strategia, come quella di cromagno, funziona con le frasi lunghe del problema in oggetto, ma non funziona con frasi corte ("To be or not to be" inganna la mia e "Metto del salame in un panino" inganna quella di cromagno).


    Ho quindi pensato di percorrere la strada delle "espressioni regolari".
    Ho impostato due pattern, uno per l'italiano ed uno per l'inglese ed in base al valore dei match restituiti dai due confronti è possibile stabilire la relativa lingua.

    Codice: 
    '---------------------------------------------------------------------------------------' Procedure : uTraduci
    ' Author    : scossa
    ' Date      : 24/02/2016
    '---------------------------------------------------------------------------------------
    '
    Function uTraduciRe(ByVal sTesto As String, Optional ByVal bVerbatim As Boolean = False) As String
      
      Const sPatternIta As String = "(\w*[aiouìèéòàùnlr])([ .,;'’:""])"
      Const sPatternEng As String = "(\w*[dtngmocfsrlyxw])([ .,;'’:""])"
      Dim oRE As Object
      Dim oMatchColl As Object
      Dim nTokensIta As Long
      Dim nTokensEng As Long
      Dim sRet As String
      Dim sVerbatim As String
        
      On Error GoTo exitSubRe_
      If sTesto = "" Then Err.Raise vbObjectError + 513, Description:=""
      sTesto = sTesto & " "
      Set oRE = CreateObject("vbscript.regexp")
      sVerbatim = " (#It/#En)"
      With oRE
        .Global = True
        .IgnoreCase = True
        .Pattern = sPatternIta
        Set oMatchColl = .Execute(sTesto)
        nTokensIta = oMatchColl.Count
        .Pattern = sPatternEng
        Set oMatchColl = .Execute(sTesto)
        nTokensEng = oMatchColl.Count
        If nTokensEng > nTokensIta Then
            sRet = "Inglese"
        Else
            sRet = "Italiano"
        End If
        If bVerbatim Then sRet = sRet & Replace(Replace(sVerbatim, "#It", nTokensIta), "#En", nTokensEng)
      End With
    
    
    exitSubRe_:
      Set oRE = Nothing
      Set oMatchColl = Nothing
      If Err.Number <> 0 Then
        sRet = CVErr(Excel.xlErrNA)
      End If
      
      uTraduciRe = sRet
      
    End Function
    Anche questo approccio può entrare in crisi con frasi corte, ad esempio con "essere o non essere" abbiamo un bel pari (2/2) e per default viene restituito "italiano".

    Volendo si potrebbe usare una doppia strategia: regexp e, per le frasi con punteggio pari, il ricorso ad un ulteriore controllo (ad esempio il ricorso al traduttore di Google risolverebbe senza esitazione frasi come "essere o non essere", "metto del salame in un panino", "to be or not to be", ma anche "In this article it is explored the effect of innovation on Italian opera houses’ performance." ... ).
    Ovviamente la soluzione del traduttore comporta tempi di esecuzioni nettamente superiori.

    Si potrebbe anche ricorrere al solo traduttore di google ma la "sentenza", soprattutto per frasi lunghe, andrebbe comunque verificata.
    Ultima modifica fatta da:scossa; 28/02/16 alle 14:41 Motivo: sistemazione codici come da suggerimento cromagno
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  15. I seguenti 2 utenti hanno dato un "Like" a scossa per questo post:


  16. #14

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4019
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Ciao a tutti,

    @scossa
    le "espressioni regolari" non fanno ancora parte del mio "bagaglio" ma sembrerebbe la soluzione più attendibile :246:

    P.S.
    Nel primo codice che hai postato mancano le due righe finali:
    Codice: 
    IngIta = sRet
    End Function
    P.P.S.
    Nel codice con le RegEx magari si potrebbe integrare il caso della cella vuota (per adesso, in caso di cella vuota restituisce "Italiano")...
    _____________________________________________________________________________________
    Scossa, mi potresti consigliare qualche link per imparare ad usare le "espressioni regolari"?
    Per adesso ho trovato questo (in italiano):
    http://blog.chalda.it/guida-alla-sin...olari-217.html

    e questi (in inglese):
    1) http://analystcave.com/excel-regex-tutorial/

    2) https://blog.udemy.com/vba-regex/
    _____________________________________________________________________________________

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  17. #15

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1017
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    Citazione Originariamente Scritto da cromagno Visualizza Messaggio
    Scossa, mi potresti consigliare qualche link per imparare ad usare le "espressioni regolari"?
    Ciao Tore,

    purtroppo, per motivi di tempo, la mia conoscenza delle regex è molto superficiale (studio quel che mi serve quando mi serve) ma i miei riferimenti sono stati e restano:
    http://www.regular-expressions.info/index.html
    https://sites.google.com/site/e90e50/vbscript/regexp
    e questo tester per fare pratica:
    http://regexpal.com.s3-website-us-east-1.amazonaws.com/
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  18. #16

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4019
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Citazione Originariamente Scritto da scossa Visualizza Messaggio
    Ciao Tore,

    purtroppo, per motivi di tempo, la mia conoscenza delle regex è molto superficiale (studio quel che mi serve quando mi serve) ma i miei riferimenti sono stati e restano:
    http://www.regular-expressions.info/index.html
    https://sites.google.com/site/e90e50/vbscript/regexp
    e questo tester per fare pratica:
    http://regexpal.com.s3-website-us-east-1.amazonaws.com/
    Grazie scossa :246:

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  19. #17
    L'avatar di Master
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Macerata
    Età
    35
    Messaggi
    74
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    1

    Re: Testo inglese o Italiano ?

    Grazie mille Cromagno per tutto l'aiuto.
    Purtroppo sono stato in Finlandia per diversi mesi e solo adesso mi sono ricordato del messaggio mandato il giorno prima della partenza
    Grazie e scusatemi

Discussioni Simili

  1. Giorni settimana da inglese in italiano
    Di alfrimpa nel forum Domande su Excel VBA e MACRO
    Risposte: 3
    Ultimo Messaggio: 20/12/16, 22:58
  2. Add in Risolutore - in inglese o italiano
    Di FabrizioB nel forum Domande su Excel in generale
    Risposte: 3
    Ultimo Messaggio: 15/12/16, 15:02
  3. [Risolto] COnvertire Testo contenente Data in Inglese in Data in Italiano
    Di cnbgpp69d nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 06/11/16, 22:55
  4. noifica in inglese?
    Di Baloon_50 nel forum Problemi, suggerimenti e Novità del forum
    Risposte: 3
    Ultimo Messaggio: 04/08/16, 19:35
  5. Perchè è in inglese e non in Italiano?
    Di Ste nel forum Domande su Excel in generale
    Risposte: 4
    Ultimo Messaggio: 19/07/15, 21:53

Tag per Questa Discussione

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •