es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo comprobar si una frase en inglés dada contiene todas las palabras sin significado utilizando Python?

Quiero verificar en un programa de Python si una frase en inglés dada contiene todas las palabras sin significado.

Devuelve verdadero si la frase tiene todas las palabras que no tienen significado.

Por ejemplo, sdfsdf sdf ssdf fsdf dsd sd.

Devuelve falso si la frase contiene al menos una palabra que tiene significado.

Por ejemplo, Hello asdf.

Aquí está el código que escribí.

Actualicé el código para la variable is_meaningless.

import nltk

nltk.download('words')

from nltk.corpus import words

def is_sentence_meaningless(sentence):
  is_meaningless = True
  for word in sentence.split():
    if(word in words.words()):
      is_meaningless = False
      break
  return is_meaningless    


print(is_sentence_meaningless("sss sss asdfasdf asdfasdfa asdfasfsd"))

print(is_sentence_meaningless(" sss sss asdfasdf asdfasdfa asdfasfsd TEST"))

¿Existe una mejor alternativa para este código? Además, ¿cómo puedo agregar mi propio corpus? Por ejemplo, tengo algunas palabras específicas del dominio que quiero que devuelva verdadero, ¿es posible?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El código proporcionado es una buena solución al problema de comprobar si una frase en inglés dada contiene solo palabras sin significado.

    En cuanto a la adición de un corpus personalizado, puedes crear un nuevo archivo de corpus que contenga tus palabras específicas del dominio y luego cargarlo utilizando la clase PlaintextCorpusReader del módulo nltk.corpus. Aquí tienes un ejemplo de código:

    import nltk
    from nltk.corpus import PlaintextCorpusReader, words
    
    # cargar el corpus personalizado
    custom_words = PlaintextCorpusReader('ruta/al/archivo/corpus', 'custom_corpus.txt').words()
    
    # combinar palabras personalizadas con las palabras de NLTK
    all_words = set(words.words() + custom_words)
    
    # comprobar si la frase contiene solo palabras sin significado
    def es_frase_sin_significado(frase):
        es_sin_significado = True
        for palabra in frase.split():
            if palabra.lower() not in all_words:
                es_sin_significado = False
                break
        return es_sin_significado
    
    # código de prueba
    print(es_frase_sin_significado("sss sss asdfasdf asdfasdfa asdfasfsd"))
    print(es_frase_sin_significado("sss sss asdfasdf asdfasdfa asdfasfsd TEST"))
    

    En el ejemplo anterior, reemplaza ruta/al/archivo/corpus con la ruta al directorio que contiene el archivo de corpus personalizado, y custom_corpus.txt con el nombre de tu archivo de corpus. Luego, PlaintextCorpusReader lee el corpus y el método words() devuelve una lista de todas las palabras en el corpus. Finalmente, las palabras personalizadas se combinan con las palabras de NLTK utilizando la función set().

    En la función es_frase_sin_significado(), el conjunto all_words se utiliza para comprobar si las palabras de la frase no tienen significado. Ten en cuenta que se utiliza el método lower() para convertir las palabras a minúsculas antes de comprobarlas con all_words.

    Esto debería permitirte comprobar si una frase contiene solo palabras sin significado, incluyendo tus palabras específicas del dominio.

Comments are closed.