Каким шагам или методам подготовки данных необходимо следовать при работе с многоязычными данными? - PullRequest
3 голосов
/ 12 апреля 2019

Я работаю над многоязычным кодом встраивания слов, где мне нужно обучить мои данные на английском и проверить их на испанском.Я буду использовать библиотеку MUSE от Facebook для встраивания слов.Я ищу способ предварительной обработки обеих моих данных одинаково.Я посмотрел на восстановление диакритических знаков, чтобы разобраться с акцентами.

Мне трудно найти способ, которым я мог бы аккуратно убрать стоп-слова, знаки препинания и погоду или нет, я должен лемматизировать.

Как я могу равномерно предварительно обработать оба языка для создания списка словарного запаса, который позже я смогу использовать с библиотекой MUSE.

1 Ответ

1 голос
/ 13 апреля 2019

Привет, Чандана. Надеюсь, у тебя все хорошо.Я хотел бы взглянуть на использование библиотеки spaCy https://spacy.io/api/doc. Человек, который ее создал, имеет видео на YouTube, в котором он обсуждает реализацию NLP на других языках.Ниже вы найдете код, который будет лемматизировать и удалять стоп-слова.Что касается знаков препинания, вы всегда можете установить игнорирование определенных символов, таких как знаки ударения.Лично я использую KNIME, который является бесплатным и открытым исходным кодом для предварительной обработки.Вам нужно будет установить расширения nlp, но приятно то, что у них есть разные расширения для разных языков, которые вы можете установить здесь: https://www.knime.com/knime-text-processing фильтр стоп-слов (начиная с версии 2.9) и узел стволов Snowball можно применять для испанского языка,Убедитесь, что вы выбрали правильный язык в диалоговом окне узла.К сожалению, пока нет части речевого узла для испанского языка.

# Create functions to lemmatize stem, and preprocess

# turn beautiful, beautifuly, beautified into stem beauti 
def lemmatize_stemming(text):
    stemmer = PorterStemmer()
    return stemmer.stem(WordNetLemmatizer().lemmatize(text, pos='v'))

# parse docs into individual words ignoring words that are less than 3 letters long
# and stopwords: him, her, them, for, there, ect since "their" is not a topic.
# then append the tolkens into a list
def preprocess(text):
    result = []
    for token in gensim.utils.simple_preprocess(text):
        newStopWords = ['your_stopword1', 'your_stop_word2']
        if token not in gensim.parsing.preprocessing.STOPWORDS and token not in newStopWords and len(token) > 3:
            nltk.bigrams(token)
            result.append(lemmatize_stemming(token))
    return result

Надеюсь, это поможет мне сообщить, если у вас есть какие-либо вопросы:)

...