TaskRabbit Alternative: Revenue Models

Commission Fee

The commission fee is the most stable income source. For all the services that are completed using the application, the app owner will get a fixed percentage of commission.

Promotion Fee

The service providers can pay the app owners to display their names in the first place when the users search for a particular service. Both the business owner and the service provider will get benefited.

Trust And Support Fee

At the time of booking a service, the app owner can impose a basic charge of trust and support fee to the customer. Through this also the business owners can generate revenue.

Surge Pricing

Knowing the heat areas and the market demand the business owners can raise the pricing plans and when the demand increases, more customers will engage in the platform which will give the app owner a handful of profit.

Promotion Fee

The app owners can make use of the blank spaces in the application to display ads. The third parties will offer money to advertise and promote their businesses even with Google Ads.

Conclusion

TaskRabbit Clone Script is the virtual platform linking millions of customers to the laborers who work as a freelancer. It is an on-demand handyman services app through which one can offer a wide variety of services like handyman, house cleaning, gardening, babysitting, plumbing, etc. Delay no more, get full-fledged Taskrabbit Clone App from Startupmart - on demand app development company

#taskrabbit #multiservices #appdevelopment

What is GEEK

Buddha Community

TaskRabbit Alternative: Revenue Models
Amara  Legros

Amara Legros

1598279100

How To Build an IoT Revenue Model?

Over the past couple of years, many enterprise IoT applications have produced disappointing financial results. Several high-profile industrial IoT projects (which I will not mention here) got bogged down in implementation and were pared back substantially.

Some IoT products and solutions have done okay, but most have underperformed expectations. As of June 2019, Gartner’s highest-rated IoT Platforms — PTC, Software AG, and Hitachi — still had not risen to the ‘Leaders’ (Magic) quadrant.

What happened? Were the revenue models wrong? Or was the tech to blame? And what will happen next?

#iot #startup #scalable-revenue-modeling #business-models #edgecomputing #ai-applications #iot-top-story #iot-revenue-modelling

Revenue Cycle Management Software Services and Custom Integration - SISGAIN

Revenues come day in day out and it becomes strenuous to keep a track of them. With the help of Revenue cycle management software, one is able to perform the hospital revenue cycle management in Oklahoma, USA in a much simplified and easy manner. Our skilful developers and engineers created the healthcare revenue cycle management software that is convenient to use by its users and meets the customers requirement. We happen to be one of the notable revenue cycle management companies, facilitating the needs of our customers and being efficient and useful in performance. For more information call us at +18444455767 or email us at hello@sisgain.com

#revenue cycle management #revenue cycle management software #revenue cycle management companies #hospital revenue cycle management #revenue cycle management services #revenue cycle management solutions

TaskRabbit Alternative: Revenue Models

Commission Fee

The commission fee is the most stable income source. For all the services that are completed using the application, the app owner will get a fixed percentage of commission.

Promotion Fee

The service providers can pay the app owners to display their names in the first place when the users search for a particular service. Both the business owner and the service provider will get benefited.

Trust And Support Fee

At the time of booking a service, the app owner can impose a basic charge of trust and support fee to the customer. Through this also the business owners can generate revenue.

Surge Pricing

Knowing the heat areas and the market demand the business owners can raise the pricing plans and when the demand increases, more customers will engage in the platform which will give the app owner a handful of profit.

Promotion Fee

The app owners can make use of the blank spaces in the application to display ads. The third parties will offer money to advertise and promote their businesses even with Google Ads.

Conclusion

TaskRabbit Clone Script is the virtual platform linking millions of customers to the laborers who work as a freelancer. It is an on-demand handyman services app through which one can offer a wide variety of services like handyman, house cleaning, gardening, babysitting, plumbing, etc. Delay no more, get full-fledged Taskrabbit Clone App from Startupmart - on demand app development company

#taskrabbit #multiservices #appdevelopment

Hoang  Kim

Hoang Kim

1657276440

5 Cách để Thực Hiện Phân Tích Cảm Xúc Bằng Python

Cho dù bạn nói về Twitter, Goodreads hay Amazon - hầu như không có một không gian kỹ thuật số nào không bão hòa với ý kiến ​​của mọi người. Trong thế giới ngày nay, điều quan trọng là các tổ chức phải tìm hiểu kỹ những ý kiến ​​này và có được những hiểu biết sâu sắc về sản phẩm hoặc dịch vụ của họ. Tuy nhiên, dữ liệu này tồn tại với số lượng đáng kinh ngạc đến mức việc đánh giá nó theo cách thủ công là một mục tiêu không thể theo đuổi tiếp theo. Đây là nơi mà một lợi ích khác của Khoa học dữ liệu đến  - Phân tích cảm xúc . Trong bài viết này, chúng ta sẽ khám phá phân tích cảm xúc bao gồm những gì và các cách khác nhau để triển khai nó trong Python.

Phân tích cảm xúc là gì?

Phân tích cảm xúc là một trường hợp sử dụng của Xử lý ngôn ngữ tự nhiên (NLP) và thuộc phạm trù phân loại văn bản . Nói một cách đơn giản, Phân tích cảm xúc bao gồm việc phân loại một văn bản thành nhiều cảm xúc khác nhau, chẳng hạn như tích cực hoặc tiêu cực, Vui vẻ, Buồn bã hoặc Trung lập, v.v. Vì vậy, mục tiêu cuối cùng của phân tích tình cảm là giải mã tâm trạng, cảm xúc hoặc tình cảm tiềm ẩn của một chữ. Đây còn được gọi là Khai thác ý kiến .

Hãy cùng chúng tôi xem xét cách tìm kiếm nhanh trên google xác định Phân tích cảm xúc:

định nghĩa phân tích tình cảm

Thu thập thông tin chi tiết và đưa ra quyết định với phân tích cảm xúc

Chà, bây giờ tôi đoán chúng ta đã phần nào quen với việc phân tích tình cảm là gì. Nhưng ý nghĩa của nó là gì và các tổ chức thu lợi từ nó như thế nào? Hãy để chúng tôi thử và khám phá điều tương tự với một ví dụ. Giả sử bạn thành lập một công ty bán nước hoa trên nền tảng trực tuyến. Bạn bày bán một loạt các loại nước hoa và chẳng bao lâu sau, khách hàng bắt đầu tràn vào. Sau một thời gian, bạn quyết định thay đổi chiến lược định giá nước hoa - bạn dự định tăng giá các loại nước hoa phổ biến và đồng thời giảm giá cho những loại nước hoa không phổ biến . Bây giờ, để xác định loại nước hoa nào được ưa chuộng, bạn bắt đầu xem xét đánh giá của khách hàng về tất cả các loại nước hoa. Nhưng bạn đang mắc kẹt! Chúng rất nhiều mà bạn không thể trải qua tất cả chúng trong một đời. Đây là nơi mà phân tích tình cảm có thể đưa bạn thoát khỏi hố sâu.

Bạn chỉ cần tập hợp tất cả các đánh giá vào một nơi và áp dụng phân tích cảm tính cho nó. Sau đây là sơ đồ phân tích tình cảm trên các bài đánh giá về ba loại nước hoa - Oải hương, Hoa hồng và Chanh. (Xin lưu ý rằng các bài đánh giá này có thể có lỗi chính tả, ngữ pháp và dấu chấm câu không chính xác như trong các tình huống thực tế)

phân tích tình cảm

Từ những kết quả này, chúng ta có thể thấy rõ rằng:

Fragrance-1 (Oải hương) được khách hàng đánh giá rất tích cực , điều này cho thấy công ty của bạn có thể tăng giá do mức độ phổ biến của nó.

Fragrance-2 (Hoa hồng) tình cờ có quan điểm trung lập với khách hàng, điều đó có nghĩa là công ty của bạn không nên thay đổi giá cả .

Fragrance-3 (Lemon) có cảm xúc tiêu cực liên quan đến nó - do đó, công ty của bạn nên xem xét giảm giá cho nó để cân bằng quy mô.

Đây chỉ là một ví dụ đơn giản về cách phân tích tình cảm có thể giúp bạn hiểu rõ hơn về sản phẩm / dịch vụ của mình và giúp tổ chức của bạn đưa ra quyết định.

Các trường hợp sử dụng phân tích cảm xúc

Chúng ta vừa thấy cách phân tích tình cảm có thể trao quyền cho các tổ chức với những hiểu biết sâu sắc có thể giúp họ đưa ra quyết định dựa trên dữ liệu. Bây giờ, chúng ta hãy đi sâu vào một số trường hợp sử dụng khác của phân tích tình cảm.

  1. Giám sát truyền thông xã hội để quản lý thương hiệu: Các thương hiệu có thể sử dụng phân tích tình cảm để đánh giá triển vọng của công chúng về Thương hiệu của họ. Ví dụ: một công ty có thể thu thập tất cả các Tweet có đề cập hoặc gắn thẻ của công ty và thực hiện phân tích tình cảm để tìm hiểu triển vọng công khai của công ty.
  2. Phân tích Sản phẩm / Dịch vụ: Các Thương hiệu / Tổ chức có thể thực hiện phân tích tình cảm trên các đánh giá của khách hàng để xem sản phẩm hoặc dịch vụ đang hoạt động tốt như thế nào trên thị trường và đưa ra các quyết định trong tương lai cho phù hợp.
  3. Dự đoán giá cổ phiếu: Dự đoán liệu cổ phiếu của một công ty sẽ tăng hay giảm là rất quan trọng đối với các nhà đầu tư. Người ta có thể xác định điều tương tự bằng cách thực hiện phân tích tình cảm trên Tiêu đề tin tức của các bài báo có chứa tên công ty. Nếu các tiêu đề tin tức liên quan đến một tổ chức cụ thể xảy ra có tâm lý tích cực - giá cổ phiếu của tổ chức đó sẽ tăng và ngược lại.

Các cách thực hiện phân tích cảm xúc bằng Python

Python là một trong những công cụ mạnh mẽ nhất khi thực hiện các nhiệm vụ khoa học dữ liệu - nó cung cấp vô số cách để thực hiện  phân tích cảm tính . Những người phổ biến nhất được tranh thủ ở đây:

  1. Sử dụng Text Blob
  2. Sử dụng Vader
  3. Sử dụng các mô hình dựa trên biểu tượng hóa Bag of Words
  4. Sử dụng Mô hình dựa trên LSTM
  5. Sử dụng mô hình dựa trên máy biến áp

Hãy đi sâu vào từng cái một.

Lưu ý: Với mục đích chứng minh phương pháp 3 & 4 (Sử dụng mô hình dựa trên hình ảnh hóa từ ngữ và sử dụng hình dựa trên LSTM) đã được sử dụng. Nó bao gồm hơn 5000 đoạn văn bản được gắn nhãn là tích cực, tiêu cực hoặc trung tính. Tập dữ liệu nằm trong giấy phép Creative Commons.

Sử dụng Text Blob

Text Blob là một thư viện Python để xử lý ngôn ngữ tự nhiên. Sử dụng Text Blob để phân tích tình cảm khá đơn giản. Nó lấy văn bản làm đầu vào và có thể trả về tính phân cựctính chủ thể làm đầu ra.

Tính phân cực quyết định tình cảm của văn bản. Giá trị của nó nằm ở [-1,1] trong đó -1 biểu thị tình cảm tiêu cực cao và 1 biểu thị cảm xúc tích cực cao.

Tính chủ quan xác định xem đầu vào văn bản là thông tin thực tế hay là ý kiến ​​cá nhân. Giá trị của nó nằm giữa [0,1] trong đó giá trị gần 0 biểu thị một phần thông tin thực tế và giá trị gần 1 biểu thị ý kiến ​​cá nhân.

Cài đặt :

pip install textblob

Nhập khối văn bản:

from textblob import TextBlob

Triển khai mã để phân tích tình cảm bằng cách sử dụng khối văn bản:

Viết mã để phân tích tình cảm bằng TextBlob khá đơn giản. Chỉ cần nhập đối tượng TextBlob và chuyển văn bản cần phân tích với các thuộc tính thích hợp như sau:

from textblob import TextBlob
text_1 = "The movie was so awesome."
text_2 = "The food here tastes terrible."#Determining the Polarity 
p_1 = TextBlob(text_1).sentiment.polarity
p_2 = TextBlob(text_2).sentiment.polarity#Determining the Subjectivity
s_1 = TextBlob(text_1).sentiment.subjectivity
s_2 = TextBlob(text_2).sentiment.subjectivityprint("Polarity of Text 1 is", p_1)
print("Polarity of Text 2 is", p_2)
print("Subjectivity of Text 1 is", s_1)
print("Subjectivity of Text 2 is", s_2)

Đầu ra:

Polarity of Text 1 is 1.0 
Polarity of Text 2 is -1.0 
Subjectivity of Text 1 is 1.0 
Subjectivity of Text 2 is 1.0

Sử dụng VADER

VADER (Valence Aware Dictionary và sEntiment Reasoner) là một công cụ phân tích tình cảm dựa trên quy tắc đã được đào tạo về văn bản trên mạng xã hội. Cũng giống như Text Blob, cách sử dụng nó trong Python khá đơn giản. Chúng ta sẽ thấy cách sử dụng của nó trong triển khai mã với một ví dụ sau.

Cài đặt:

pip install vaderSentiment

Nhập lớp SentimentIntensityAnalyzer từ Vader:

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer

Mã phân tích tình cảm bằng Vader:

Đầu tiên, chúng ta cần tạo một đối tượng của lớp SentimentIntensityAnalyzer; thì chúng ta cần truyền văn bản vào hàm polarity_scores () của đối tượng như sau:

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
sentiment = SentimentIntensityAnalyzer()
text_1 = "The book was a perfect balance between wrtiting style and plot."
text_2 =  "The pizza tastes terrible."
sent_1 = sentiment.polarity_scores(text_1)
sent_2 = sentiment.polarity_scores(text_2)
print("Sentiment of text 1:", sent_1)
print("Sentiment of text 2:", sent_2)

Đầu ra :

Sentiment of text 1: {'neg': 0.0, 'neu': 0.73, 'pos': 0.27, 'compound': 0.5719} 
Sentiment of text 2: {'neg': 0.508, 'neu': 0.492, 'pos': 0.0, 'compound': -0.4767}

Như chúng ta có thể thấy, một đối tượng VaderSentiment trả về một từ điển về điểm tình cảm cho văn bản được phân tích.

Sử dụng mô hình dựa trên hình ảnh hóa dựa trên Bag of Words

Trong hai cách tiếp cận đã thảo luận, tức là Text Blob và Vader, chúng tôi chỉ đơn giản sử dụng các thư viện Python để thực hiện phân tích tình cảm. Bây giờ chúng ta sẽ thảo luận về một cách tiếp cận, trong đó chúng ta sẽ đào tạo mô hình của riêng mình cho nhiệm vụ. Các bước liên quan đến việc thực hiện phân tích tình cảm bằng phương pháp Vectơ hóa Bag of Words như sau:

  1. Xử lý trước văn bản của dữ liệu đào tạo (Xử lý trước văn bản bao gồm Chuẩn hóa, Mã hóa, Xóa từ dừng và Tạo gốc / Bổ sung.)
  2. Tạo một Túi từ cho dữ liệu văn bản được xử lý trước bằng cách sử dụng phương pháp Vectơ hóa số lượng hoặc TF-IDF Vectơ hóa.
  3. Đào tạo một mô hình phân loại phù hợp trên dữ liệu đã xử lý để phân loại tình cảm.

Mã phân tích tình cảm sử dụng Phương pháp vector hóa Bag of Words:

Để xây dựng một mô hình phân tích tình cảm bằng cách sử dụng Phương pháp Vectơ hóa BOW, chúng ta cần một tập dữ liệu được gắn nhãn. Như đã nêu trước đó, tập dữ liệu được sử dụng cho cuộc trình diễn này đã được lấy từ Kaggle. Chúng tôi chỉ đơn giản sử dụng vectơ đếm của sklearn để tạo BOW. Sau đó, chúng tôi đã đào tạo một bộ phân loại Naive Bayes đa thức, cho điểm chính xác là 0,84.

Tập dữ liệu có thể được lấy từ đây .

#Loading the Dataset
import pandas as pd
data = pd.read_csv('Finance_data.csv')
#Pre-Prcoessing and Bag of Word Vectorization using Count Vectorizer
from sklearn.feature_extraction.text import CountVectorizer
from nltk.tokenize import RegexpTokenizer
token = RegexpTokenizer(r'[a-zA-Z0-9]+')
cv = CountVectorizer(stop_words='english',ngram_range = (1,1),tokenizer = token.tokenize)
text_counts = cv.fit_transform(data['sentences'])
#Splitting the data into trainig and testing
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(text_counts, data['feedback'], test_size=0.25, random_state=5)
#Training the model
from sklearn.naive_bayes import MultinomialNB
MNB = MultinomialNB()
MNB.fit(X_train, Y_train)
#Caluclating the accuracy score of the model
from sklearn import metrics
predicted = MNB.predict(X_test)
accuracy_score = metrics.accuracy_score(predicted, Y_test)
print("Accuracuy Score: ",accuracy_score)

Đầu ra :

Accuracuy Score:  0.9111675126903553

Bộ phân loại được đào tạo có thể được sử dụng để dự đoán cảm xúc của bất kỳ đầu vào văn bản nhất định nào.

Sử dụng mô hình dựa trên LSTM

Mặc dù chúng tôi có thể đạt được điểm chính xác khá với phương pháp Vectơ hóa Bag of Words, nhưng nó có thể không mang lại kết quả tương tự khi xử lý các bộ dữ liệu lớn hơn. Điều này làm phát sinh nhu cầu sử dụng các mô hình dựa trên học tập sâu để đào tạo mô hình phân tích tình cảm.

Đối với các tác vụ NLP, chúng tôi thường sử dụng các mô hình dựa trên RNN vì chúng được thiết kế để xử lý dữ liệu tuần tự. Ở đây, chúng tôi sẽ đào tạo mô hình LSTM (Bộ nhớ ngắn hạn dài hạn) bằng cách sử dụng TensorFlow với Keras . Các bước để thực hiện phân tích tình cảm bằng cách sử dụng các mô hình dựa trên LSTM như sau:

  1. Xử lý trước văn bản của dữ liệu đào tạo (Xử lý trước văn bản bao gồm Chuẩn hóa, Mã hóa, Xóa từ dừng và Tạo gốc / Bổ sung.)
  2. Nhập Tokenizer từ Keras.preprocessing.text và tạo đối tượng của nó. Đặt Tokenizer trên toàn bộ văn bản đào tạo (để Tokenizer được đào tạo về từ vựng dữ liệu đào tạo). Nhúng văn bản đã tạo bằng cách sử dụng phương thức text_to_sequence () của Tokenizer và lưu trữ chúng sau khi đệm chúng có độ dài bằng nhau. (Nhúng là các đại diện bằng số / vectơ của văn bản. Vì chúng tôi không thể cung cấp mô hình của mình trực tiếp với dữ liệu văn bản, trước tiên chúng tôi cần chuyển đổi chúng thành nhúng)
  3. Sau khi tạo các nhúng, chúng tôi đã sẵn sàng để xây dựng mô hình. Chúng tôi xây dựng mô hình bằng cách sử dụng TensorFlow - thêm Đầu vào, LSTM và các lớp dày đặc vào nó. Thêm người bỏ học và điều chỉnh các siêu tham số để có được điểm số chính xác khá. Nói chung, chúng tôi có xu hướng sử dụng các chức năng kích hoạt ReLU hoặc LeakyReLU trong các lớp bên trong của các mô hình LSTM vì nó tránh được vấn đề gradient biến mất. Ở lớp đầu ra, chúng tôi sử dụng chức năng kích hoạt Softmax hoặc Sigmoid.

Mã phân tích tình cảm sử dụng phương pháp tiếp cận mô hình dựa trên LSTM:

Ở đây, chúng tôi đã sử dụng cùng một tập dữ liệu như chúng tôi đã sử dụng trong trường hợp của phương pháp BOW. Độ chính xác huấn luyện là 0,90.

#Importing necessary libraries
import nltk
import pandas as pd
from textblob import Word
from nltk.corpus import stopwords
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import classification_report,confusion_matrix,accuracy_score
from keras.models import Sequential
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences
from keras.layers import Dense, Embedding, LSTM, SpatialDropout1D
from sklearn.model_selection import train_test_split 
#Loading the dataset
data = pd.read_csv('Finance_data.csv')
#Pre-Processing the text 
def cleaning(df, stop_words):
    df['sentences'] = df['sentences'].apply(lambda x: ' '.join(x.lower() for x in x.split()))
    # Replacing the digits/numbers
    df['sentences'] = df['sentences'].str.replace('d', '')
    # Removing stop words
    df['sentences'] = df['sentences'].apply(lambda x: ' '.join(x for x in x.split() if x not in stop_words))
    # Lemmatization
    df['sentences'] = df['sentences'].apply(lambda x: ' '.join([Word(x).lemmatize() for x in x.split()]))
    return df
stop_words = stopwords.words('english')
data_cleaned = cleaning(data, stop_words)
#Generating Embeddings using tokenizer
tokenizer = Tokenizer(num_words=500, split=' ') 
tokenizer.fit_on_texts(data_cleaned['verified_reviews'].values)
X = tokenizer.texts_to_sequences(data_cleaned['verified_reviews'].values)
X = pad_sequences(X)
#Model Building
model = Sequential()
model.add(Embedding(500, 120, input_length = X.shape[1]))
model.add(SpatialDropout1D(0.4))
model.add(LSTM(704, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(352, activation='LeakyReLU'))
model.add(Dense(3, activation='softmax'))
model.compile(loss = 'categorical_crossentropy', optimizer='adam', metrics = ['accuracy'])
print(model.summary())
#Model Training
model.fit(X_train, y_train, epochs = 20, batch_size=32, verbose =1)
#Model Testing
model.evaluate(X_test,y_test)

Sử dụng mô hình dựa trên máy biến áp

Các mô hình dựa trên máy biến áp là một trong những Kỹ thuật Xử lý Ngôn ngữ Tự nhiên tiên tiến nhất. Họ tuân theo kiến ​​trúc dựa trên Bộ mã hóa-Bộ giải mã và sử dụng các khái niệm về sự chú ý của bản thân để mang lại kết quả ấn tượng. Mặc dù người ta luôn có thể xây dựng một mô hình máy biến áp từ đầu, nhưng đó là một công việc khá tẻ nhạt. Do đó, chúng ta có thể sử dụng các mẫu máy biến áp đã được đào tạo trước có sẵn trên Mặt ôm . Hugging Face là một cộng đồng AI mã nguồn mở cung cấp vô số mô hình được đào tạo trước cho các ứng dụng NLP. Các mô hình này có thể được sử dụng như vậy hoặc có thể được tinh chỉnh cho các nhiệm vụ cụ thể.

Cài đặt:

pip install transformers

Nhập lớp SentimentIntensityAnalyzer từ Vader:

import transformers

Mã phân tích tình cảm bằng cách sử dụng các mô hình dựa trên Máy biến áp:

Để thực hiện bất kỳ tác vụ nào sử dụng máy biến áp, trước tiên chúng ta cần nhập chức năng đường ống từ máy biến áp. Sau đó, một đối tượng của hàm đường ống được tạo và nhiệm vụ cần thực hiện được chuyển như một đối số (tức là phân tích cảm tính trong trường hợp của chúng ta). Chúng tôi cũng có thể chỉ định mô hình mà chúng tôi cần sử dụng để thực hiện tác vụ. Ở đây, vì chúng tôi chưa đề cập đến mô hình sẽ được sử dụng, chế độ chưng cất-cơ sở-không phân biệt-finetuned-sst-2-English được sử dụng theo mặc định để phân tích cảm tính. Bạn có thể xem danh sách các nhiệm vụ và mô hình có sẵn tại đây .

from transformers import pipeline
sentiment_pipeline = pipeline("sentiment-analysis")
data = ["It was the best of times.", "t was the worst of times."]
sentiment_pipeline(data)Output:[{'label': 'POSITIVE', 'score': 0.999457061290741},  {'label': 'NEGATIVE', 'score': 0.9987301230430603}]

Sự kết luận

Trong thời đại này khi người dùng có thể bày tỏ quan điểm của mình một cách dễ dàng và dữ liệu được tạo ra một cách siêu tốc chỉ trong vài giây - việc rút ra thông tin chi tiết từ những dữ liệu đó là điều quan trọng để các tổ chức đưa ra quyết định hiệu quả - và Phân tích cảm xúc chứng tỏ là một mảnh ghép còn thiếu!

Bây giờ chúng ta đã trình bày rất chi tiết về những gì chính xác yêu cầu phân tích cảm xúc và các phương pháp khác nhau mà người ta có thể sử dụng để thực hiện nó trong Python. Nhưng đây chỉ là một số minh chứng thô sơ - bạn chắc chắn phải tiếp tục tìm hiểu các mô hình và thử chúng trên dữ liệu của riêng bạn.

Nguồn: https://www.analyticsvidhya.com/blog/2022/07/sentiment-analysis-using-python/

#python 

Diego  Elizondo

Diego Elizondo

1657272720

5 Formas De Realizar análisis De Sentimiento En Python

Ya sea que hables de Twitter, Goodreads o Amazon, difícilmente existe un espacio digital que no esté saturado con las opiniones de la gente. En el mundo actual, es fundamental que las organizaciones profundicen en estas opiniones y obtengan información sobre sus productos o servicios. Sin embargo, estos datos existen en cantidades tan asombrosas que medirlos manualmente es una tarea casi imposible. Aquí es donde entra en juego otra ventaja de la ciencia de datos  : el análisis de sentimientos . En este artículo, exploraremos qué abarca el análisis de sentimientos y las diversas formas de implementarlo en Python.

¿Qué es el análisis de sentimiento?

El análisis de sentimientos es un caso de uso del procesamiento del lenguaje natural (NLP) y se incluye en la categoría de clasificación de texto . En pocas palabras, el análisis de sentimientos implica clasificar un texto en varios sentimientos, como positivo o negativo, feliz, triste o neutral, etc. Por lo tanto, el objetivo final del análisis de sentimientos es descifrar el estado de ánimo, la emoción o el sentimiento subyacente de un texto. Esto también se conoce como Minería de Opinión .

Veamos cómo una búsqueda rápida en Google define el análisis de sentimiento:

definición de análisis de sentimiento

Obtener información y tomar decisiones con el análisis de sentimientos

Bueno, a estas alturas supongo que estamos algo acostumbrados a lo que es el análisis de sentimientos. Pero, ¿cuál es su importancia y cómo se benefician las organizaciones de ella? Intentemos explorar lo mismo con un ejemplo. Suponga que inicia una empresa que vende perfumes en una plataforma en línea. Pones una amplia gama de fragancias y pronto los clientes comienzan a llegar. Después de un tiempo, decides cambiar la estrategia de precios de los perfumes: planeas aumentar los precios de las fragancias populares y al mismo tiempo ofrecer descuentos en las impopulares. . Ahora, para determinar qué fragancias son populares, comienza a revisar las reseñas de los clientes de todas las fragancias. ¡Pero estás atascado! Son tantos que no puedes pasar por todos ellos en una sola vida. Aquí es donde el análisis de sentimientos puede sacarte del pozo.

Simplemente reúne todas las reseñas en un solo lugar y aplica un análisis de sentimiento. La siguiente es una representación esquemática del análisis de sentimientos sobre las reseñas de tres fragancias de perfumes: lavanda, rosa y limón. (Tenga en cuenta que estas revisiones pueden tener errores ortográficos, gramaticales y de puntuación como en los escenarios del mundo real)

análisis de los sentimientos

A partir de estos resultados, podemos ver claramente que:

Fragrance-1 (Lavender) tiene críticas muy positivas por parte de los clientes, lo que indica que su empresa puede aumentar sus precios dada su popularidad.

Fragrance-2 (Rose) tiene una perspectiva neutral entre el cliente, lo que significa que su empresa no debe cambiar su precio .

Fragrance-3 (Lemon) tiene un sentimiento general negativo asociado con él; por lo tanto, su empresa debería considerar ofrecer un descuento para equilibrar la balanza.

Este fue solo un ejemplo simple de cómo el análisis de sentimientos puede ayudarlo a obtener información sobre sus productos/servicios y ayudar a su organización a tomar decisiones.

Casos de uso de análisis de opinión

Acabamos de ver cómo el análisis de sentimientos puede empoderar a las organizaciones con conocimientos que pueden ayudarlas a tomar decisiones basadas en datos. Ahora, echemos un vistazo a algunos casos de uso más del análisis de sentimientos.

  1. Monitoreo de redes sociales para la gestión de marcas: las marcas pueden usar el análisis de sentimientos para medir la perspectiva pública de su marca. Por ejemplo, una empresa puede recopilar todos los Tweets con la mención o etiqueta de la empresa y realizar un análisis de opinión para conocer la perspectiva pública de la empresa.
  2. Análisis de productos/servicios: las marcas/organizaciones pueden realizar análisis de opinión sobre las reseñas de los clientes para ver qué tan bien se está desempeñando un producto o servicio en el mercado y tomar decisiones futuras en consecuencia.
  3. Predicción del precio de las acciones: predecir si las acciones de una empresa subirán o bajarán es crucial para los inversores. Se puede determinar lo mismo realizando un análisis de sentimiento en los titulares de noticias de los artículos que contienen el nombre de la empresa. Si los titulares de noticias relacionados con una organización en particular tienen un sentimiento positivo, los precios de sus acciones deberían subir y viceversa.

Formas de realizar análisis de sentimiento en Python

Python es una de las herramientas más poderosas cuando se trata de realizar tareas de ciencia de datos: ofrece una multitud de formas de realizar  análisis de sentimientos . Los más populares se enumeran aquí:

  1. Usar blob de texto
  2. usando vader
  3. Uso de modelos basados ​​en vectorización de bolsa de palabras
  4. Uso de modelos basados ​​en LSTM
  5. Uso de modelos basados ​​en transformadores

Profundicemos en ellos uno por uno.

Nota: A los efectos de las demostraciones de los métodos 3 y 4 (Uso de modelos basados ​​en vectorización de bolsa de palabras y uso de modelos basados ​​en LSTM) , se ha utilizado el análisis de sentimientos . Comprende más de 5000 fragmentos de texto etiquetados como positivos, negativos o neutrales. El conjunto de datos se encuentra bajo la licencia Creative Commons.

Usar blob de texto

Text Blob es una biblioteca de Python para el procesamiento del lenguaje natural. Usar Text Blob para el análisis de sentimientos es bastante simple. Toma texto como entrada y puede devolver polaridad y subjetividad como salidas.

La polaridad determina el sentimiento del texto. Sus valores se encuentran en [-1,1] donde -1 denota un sentimiento muy negativo y 1 denota un sentimiento muy positivo.

La subjetividad determina si una entrada de texto es información objetiva o una opinión personal. Su valor se encuentra entre [0,1], donde un valor más cercano a 0 denota una información fáctica y un valor más cercano a 1 denota una opinión personal.

Instalación :

pip install textblob

Importación de blob de texto:

from textblob import TextBlob

Implementación de código para el análisis de sentimiento usando Text Blob:

Escribir código para el análisis de sentimientos usando TextBlob es bastante simple. Simplemente importe el objeto TextBlob y pase el texto a analizar con los atributos apropiados de la siguiente manera:

from textblob import TextBlob
text_1 = "The movie was so awesome."
text_2 = "The food here tastes terrible."#Determining the Polarity 
p_1 = TextBlob(text_1).sentiment.polarity
p_2 = TextBlob(text_2).sentiment.polarity#Determining the Subjectivity
s_1 = TextBlob(text_1).sentiment.subjectivity
s_2 = TextBlob(text_2).sentiment.subjectivityprint("Polarity of Text 1 is", p_1)
print("Polarity of Text 2 is", p_2)
print("Subjectivity of Text 1 is", s_1)
print("Subjectivity of Text 2 is", s_2)

Producción:

Polarity of Text 1 is 1.0 
Polarity of Text 2 is -1.0 
Subjectivity of Text 1 is 1.0 
Subjectivity of Text 2 is 1.0

Usando VADER

VADER (Valence Aware Dictionary and sEntiment Reasoner) es un analizador de sentimientos basado en reglas que ha sido entrenado en texto de redes sociales. Al igual que Text Blob, su uso en Python es bastante simple. Veremos su uso en la implementación de código con un ejemplo dentro de un rato.

Instalación:

pip install vaderSentiment

Importación de la clase SentimentIntensityAnalyzer de Vader:

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer

Código para análisis de sentimiento usando Vader:

Primero, necesitamos crear un objeto de la clase SentimentIntensityAnalyzer; luego necesitamos pasar el texto a la función polarity_scores() del objeto de la siguiente manera:

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
sentiment = SentimentIntensityAnalyzer()
text_1 = "The book was a perfect balance between wrtiting style and plot."
text_2 =  "The pizza tastes terrible."
sent_1 = sentiment.polarity_scores(text_1)
sent_2 = sentiment.polarity_scores(text_2)
print("Sentiment of text 1:", sent_1)
print("Sentiment of text 2:", sent_2)

Salida :

Sentiment of text 1: {'neg': 0.0, 'neu': 0.73, 'pos': 0.27, 'compound': 0.5719} 
Sentiment of text 2: {'neg': 0.508, 'neu': 0.492, 'pos': 0.0, 'compound': -0.4767}

Como podemos ver, un objeto VaderSentiment devuelve un diccionario de puntajes de sentimiento para el texto a analizar.

Uso de modelos basados ​​en vectorización de bolsa de palabras

En los dos enfoques discutidos hasta ahora, es decir, Text Blob y Vader, simplemente hemos usado bibliotecas de Python para realizar análisis de sentimiento. Ahora discutiremos un enfoque en el que entrenaremos nuestro propio modelo para la tarea. Los pasos necesarios para realizar el análisis de sentimiento mediante el método de vectorización Bolsa de palabras son los siguientes:

  1. Preprocesar el texto de los datos de entrenamiento (el preprocesamiento del texto implica la normalización, la tokenización, la eliminación de palabras vacías y la derivación/lematización).
  2. Cree una bolsa de palabras para los datos de texto preprocesados ​​utilizando el método de vectorización de conteo o vectorización TF-IDF.
  3. Entrene un modelo de clasificación adecuado en los datos procesados ​​para la clasificación de sentimientos.

Código para análisis de sentimiento utilizando el enfoque de vectorización de bolsa de palabras:

Para construir un modelo de análisis de sentimientos utilizando el enfoque de vectorización BOW, necesitamos un conjunto de datos etiquetado. Como se indicó anteriormente, el conjunto de datos utilizado para esta demostración se obtuvo de Kaggle. Simplemente hemos usado el vectorizador de conteo de sklearn para crear el ARCO. Posteriormente, entrenamos un clasificador Multinomial Naive Bayes, para el cual se obtuvo una puntuación de precisión de 0,84.

El conjunto de datos se puede obtener desde aquí .

#Loading the Dataset
import pandas as pd
data = pd.read_csv('Finance_data.csv')
#Pre-Prcoessing and Bag of Word Vectorization using Count Vectorizer
from sklearn.feature_extraction.text import CountVectorizer
from nltk.tokenize import RegexpTokenizer
token = RegexpTokenizer(r'[a-zA-Z0-9]+')
cv = CountVectorizer(stop_words='english',ngram_range = (1,1),tokenizer = token.tokenize)
text_counts = cv.fit_transform(data['sentences'])
#Splitting the data into trainig and testing
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(text_counts, data['feedback'], test_size=0.25, random_state=5)
#Training the model
from sklearn.naive_bayes import MultinomialNB
MNB = MultinomialNB()
MNB.fit(X_train, Y_train)
#Caluclating the accuracy score of the model
from sklearn import metrics
predicted = MNB.predict(X_test)
accuracy_score = metrics.accuracy_score(predicted, Y_test)
print("Accuracuy Score: ",accuracy_score)

Salida :

Accuracuy Score:  0.9111675126903553

El clasificador entrenado se puede usar para predecir el sentimiento de cualquier entrada de texto dada.

Uso de modelos basados ​​en LSTM

Aunque pudimos obtener una puntuación de precisión decente con el método de vectorización Bolsa de palabras, es posible que no produzca los mismos resultados cuando se trata de conjuntos de datos más grandes. Esto da lugar a la necesidad de emplear modelos basados ​​en aprendizaje profundo para el entrenamiento del modelo de análisis de sentimiento.

Para las tareas de NLP, generalmente usamos modelos basados ​​en RNN, ya que están diseñados para tratar datos secuenciales. Aquí, entrenaremos un modelo LSTM (memoria a largo plazo) usando TensorFlow con Keras . Los pasos para realizar un análisis de sentimiento utilizando modelos basados ​​en LSTM son los siguientes:

  1. Preprocesar el texto de los datos de entrenamiento (el preprocesamiento del texto implica la normalización, la tokenización, la eliminación de palabras vacías y la derivación/lematización).
  2. Importe Tokenizer desde Keras.preprocessing.text y cree su objeto. Ajuste el tokenizador en todo el texto de entrenamiento (para que el tokenizador se entrene en el vocabulario de datos de entrenamiento). Incrustaciones de texto generadas usando el método texts_to_sequence() del Tokenizer y almacenarlas después de rellenarlas con la misma longitud. (Las incrustaciones son representaciones numéricas/vectorizadas de texto. Dado que no podemos alimentar nuestro modelo con los datos de texto directamente, primero debemos convertirlos en incrustaciones)
  3. Después de haber generado las incrustaciones, estamos listos para construir el modelo. Construimos el modelo usando TensorFlow: le agregamos Input, LSTM y capas densas. Agregue abandonos y ajuste los hiperparámetros para obtener una puntuación de precisión decente. En general, tendemos a usar las funciones de activación ReLU o LeakyReLU en las capas internas de los modelos LSTM, ya que evita el problema del gradiente de fuga. En la capa de salida, usamos la función de activación Softmax o Sigmoid.

Código para el análisis de sentimiento utilizando un enfoque de modelo basado en LSTM:

Aquí, hemos utilizado el mismo conjunto de datos que usamos en el caso del enfoque BOW. Se obtuvo una precisión de entrenamiento de 0,90.

#Importing necessary libraries
import nltk
import pandas as pd
from textblob import Word
from nltk.corpus import stopwords
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import classification_report,confusion_matrix,accuracy_score
from keras.models import Sequential
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences
from keras.layers import Dense, Embedding, LSTM, SpatialDropout1D
from sklearn.model_selection import train_test_split 
#Loading the dataset
data = pd.read_csv('Finance_data.csv')
#Pre-Processing the text 
def cleaning(df, stop_words):
    df['sentences'] = df['sentences'].apply(lambda x: ' '.join(x.lower() for x in x.split()))
    # Replacing the digits/numbers
    df['sentences'] = df['sentences'].str.replace('d', '')
    # Removing stop words
    df['sentences'] = df['sentences'].apply(lambda x: ' '.join(x for x in x.split() if x not in stop_words))
    # Lemmatization
    df['sentences'] = df['sentences'].apply(lambda x: ' '.join([Word(x).lemmatize() for x in x.split()]))
    return df
stop_words = stopwords.words('english')
data_cleaned = cleaning(data, stop_words)
#Generating Embeddings using tokenizer
tokenizer = Tokenizer(num_words=500, split=' ') 
tokenizer.fit_on_texts(data_cleaned['verified_reviews'].values)
X = tokenizer.texts_to_sequences(data_cleaned['verified_reviews'].values)
X = pad_sequences(X)
#Model Building
model = Sequential()
model.add(Embedding(500, 120, input_length = X.shape[1]))
model.add(SpatialDropout1D(0.4))
model.add(LSTM(704, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(352, activation='LeakyReLU'))
model.add(Dense(3, activation='softmax'))
model.compile(loss = 'categorical_crossentropy', optimizer='adam', metrics = ['accuracy'])
print(model.summary())
#Model Training
model.fit(X_train, y_train, epochs = 20, batch_size=32, verbose =1)
#Model Testing
model.evaluate(X_test,y_test)

Uso de modelos basados ​​en transformadores

Los modelos basados ​​en transformadores son una de las técnicas de procesamiento del lenguaje natural más avanzadas. Siguen una arquitectura basada en Codificador-Decodificador y emplean los conceptos de autoatención para producir resultados impresionantes. Aunque siempre se puede construir un modelo de transformador desde cero, es una tarea bastante tediosa. Por lo tanto, podemos usar modelos de transformadores preentrenados disponibles en Hugging Face . Hugging Face es una comunidad de IA de código abierto que ofrece una multitud de modelos preentrenados para aplicaciones de PNL. Estos modelos se pueden usar como tales o se pueden ajustar para tareas específicas.

Instalación:

pip install transformers

Importación de la clase SentimentIntensityAnalyzer de Vader:

import transformers

Código para análisis de sentimiento usando modelos basados ​​en transformadores:

Para realizar cualquier tarea usando transformadores, primero debemos importar la función de canalización desde los transformadores. Luego, se crea un objeto de la función de canalización y se pasa como argumento la tarea a realizar (es decir, análisis de sentimiento en nuestro caso). También podemos especificar el modelo que necesitamos usar para realizar la tarea. Aquí, dado que no hemos mencionado el modelo que se usará, el modo destilería-base-uncased-finetuned-sst-2-English se usa de forma predeterminada para el análisis de sentimiento. Puede consultar la lista de tareas y modelos disponibles aquí .

from transformers import pipeline
sentiment_pipeline = pipeline("sentiment-analysis")
data = ["It was the best of times.", "t was the worst of times."]
sentiment_pipeline(data)Output:[{'label': 'POSITIVE', 'score': 0.999457061290741},  {'label': 'NEGATIVE', 'score': 0.9987301230430603}]

Conclusión

En esta era en la que los usuarios pueden expresar sus puntos de vista sin esfuerzo y los datos se generan de manera superflua en fracciones de segundos, obtener información de dichos datos es vital para que las organizaciones tomen decisiones eficientes, ¡y el análisis de sentimientos demuestra ser la pieza faltante del rompecabezas!

Hasta ahora hemos cubierto con gran detalle qué implica exactamente el análisis de sentimientos y los diversos métodos que se pueden usar para realizarlo en Python. Pero estas fueron solo algunas demostraciones rudimentarias: seguramente debe seguir adelante y jugar con los modelos y probarlos con sus propios datos.

Fuente: https://www.analyticsvidhya.com/blog/2022/07/sentiment-analysis-using-python/

#python