Spacy - NLTK: Определение языка - PullRequest
0 голосов
/ 24 марта 2020

В настоящее время я работаю над проектом, связанным с кучей постов в социальных сетях. Некоторые из этих сообщений находятся на английском языке sh, а некоторые на испанском sh.

Мой текущий код работает довольно гладко. Тем не менее, я спрашиваю себя, может ли Spacy / NLTK автоматически определить, на каком языке написано / стоп-слова / et c. это должно использовать для каждого сообщения (в зависимости от того, является ли это сообщением Engli sh или Spani sh)? На данный момент я просто анализирую каждое сообщение для стеммера без явного указания языка.

Это фрагмент моего текущего сценария:

import re
import pandas as pd
!pip install pyphen
import pyphen
!pip install spacy
import spacy
!pip install nltk
import nltk
from nltk import SnowballStemmer
from nltk.corpus import stopwords
from nltk.stem.porter import PorterStemmer
!pip install spacy-langdetect
from spacy_langdetect import LanguageDetector
!pip install textblob
from textblob import TextBlob

# Download Stopwords
nltk.download('stopwords')
stop_words_eng = set(stopwords.words('english'))
stop_words_es = set(stopwords.words('spanish'))

# Import Stemmer
p_stemmer = PorterStemmer()    
#Snowball (Porter2): Nearly universally regarded as an improvement over porter, and for good reason. 
snowball_stemmer = SnowballStemmer("english")
dic = pyphen.Pyphen(lang='en')

# Load Data
data = pd.read_csv("mergerfile.csv", error_bad_lines=False)
pd.set_option('display.max_columns', None)
posts = data.loc[data["ad_creative"] != "NONE"]

# Functions
def get_number_of_sentences(text):
    sentences = [sent.string.strip() for sent in text.sents]

    return len(sentences)


def get_average_sentence_length(text):
    number_of_sentences = get_number_of_sentences(text)
    tokens = [token.text for token in text]

    return len(tokens) / number_of_sentences


def get_token_length(text):
    tokens = [token.text for token in text]

    return len(tokens)

def text_analyzer(data_frame):
    content = []
    label = []
    avg_sentence_length = []
    number_sentences = []
    number_words = []

   for string in data_frame:
       string.join("")

       if len(string) <= 4:
           print(string)
           print("filtered")
           content.append(string)
           avg_sentence_length.append("filtered")
           number_sentences.append("filtered")
           number_words.append("filtered")

       else:
           # print list
           print(string)
           content.append(string)
           ##Average Sentence Lenght
           result = get_average_sentence_length(nlp(string))
           avg_sentence_length.append(result)
           print("avg sentence length:", result)

           ##Number of Sentences
           result = get_number_of_sentences(nlp(string))
           number_sentences.append(result)
           print("#sentences:", result)

           ##Number of words
           result = get_token_length(nlp(string))
           number_words.append(result)
           print("#Words", result)

content, avg_sentence_length, number_sentences, number_words = text_analyzer(
    data["posts"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...