9 min read

เริ่มทำ Sentiment Analysis ใช้งบศูนย์บาท ด้วย Google Sheets สำหรับมือใหม่

เริ่มทำ Sentiment Analysis ใช้งบศูนย์บาท ด้วย Google Sheets สำหรับมือใหม่

การวิเคราะห์ความพึงพอใจ หรือ Sentiment Analysis คืออะไร?

Sentiment Analysis คือ การวิเคราะห์ความพึงพอใจหรือความรู้สึกจาก Data ที่เป็น Text, String เช่น ความคิดเห็น, ข้อเสนอแนะจากแบบสำรวจรวมถึง Post และ Comment ใน Social Media ช่องทางต่างๆ

โดยมักแบ่งความพึงพอใจหรือ Sentiment ออกเป็น 3 หมวดหมู่ คือ

  1. Positive = เป็นข้อความเชิงบวก มีผลดีต่อแบบสำรวจและแบรนด์
  2. Neutral = เป็นข้อความกลางๆ ไม่มีผลดีหรือผลเสียต่อแบบสำรวจและต่อแบรนด์
  3. Negative = เป็นข้อความเชิงลบ มีผลเสียต่อแบบสำรวจและแบรนด์

ทำไมต้องทำ Sentiment Analysis?

  1. ปรับปรุงประสิทธิภาพในการบริการให้ดียิ่งขึ้น
  2. ช่วยเพิ่มยอดขายและปรับปรุงแคมเปญการตลาด
  3. ดับไฟ แก้ปัญหาทั้งเล็กและใหญ่ได้อย่างทันท่วงที

ทำ Sentiment Analysis ด้วยงบศูนย์บาท

บทความนี้เราจะพาทุกคนมาทำ Sentiment Analysis ด้วย Google Sheets ที่เป็นเครื่องมือฟรีจาก Google เพียงแค่เรามี Gmail ก็สามารถเข้าได้งานได้ทันที

หลายคนคงเคยใช้ Google Form ในการเป็นทั้งผู้สร้างและผู้ตอบแบบสำรวจความพึงพอใจจากลูกค้าหรือภายในองค์กรกันมาบ้างไม่มากก็น้อย

โดยปกติมักมีอยู่อย่างน้อย 1 คำถาม ที่ให้ตอบเป็นข้อเสนอแนะอื่นๆ ลักษณะเป็น Text Box ใหญ่ๆ เพื่อให้พิมพ์ข้อความ Free text ได้ตามใจ เมื่อเกิด Data ลักษณะนี้ขึ้นตึงต้องมีการจัดหมวดหมู่เพื่อให้ง่ายต่อการวิเคราะห์ เราเรียกสิ่งนี้ว่า Sentiment Analysis

💡
บทความนี้จะขอข้ามขั้นตอนการสร้าง Google Form โดยจะเริ่มใน Google Sheets เลย

1. สร้าง Sentiment Data เพื่อใช้ในการวิเคราะห์

กดเปิด Browser และพิมพ์คำสั่งนี้ลงไปในช่อง Address

sheets.new

จากนั้นกด Enter เพื่อสร้าง Google Sheets ไฟล์ใหม่

Create new google sheets file

ตั้งชื่อไฟล์และเพิ่มข้อมูล

โดยเราจะสมมุติว่าเป็นแบบสำรวจเรื่อง "คุณรู้สึกอย่างไรกับบริษัทของเรา?" เป็นแบบสำรวจที่เราทำทุกเดือนหรือทุกไตรมาส

ตั้งชื่อไฟล์เป็น "Sentiment Analysis:คุณรู้สึกอย่างไรกับการทำงานในช่วงนี้" เปลี่ยนชื่อ Sheet1 เป็น "data" และเพิ่มข้อมูล 2 คอลัมน์ คือ ID และ Comment

Generate simulated data in the "comment" column

2. เริ่มสร้าง List ของ Sentiment Words

การทำ Sentiment ครั้งแรก ต้องใช้วิธีอ่านทุกข้อความที่มี เป็นการสร้าง Positive list และ Negative list เพื่อสะสม Sentiment words ให้ความแม่นยำในการวิเคราะห์มีมากขึ้นเรื่อยๆ

สร้าง Column Positive List และ Negative List

Generate a list of positive and negative words

3. ทำความรู้จัก Regular Expression

REGEX ย่อมากจาก "Regular Expression" คือ การเขียน Sequence of characters ด้วยอักขระพิเศษเพื่อ Match pattern ที่อยู่ใน Data ที่เราสนใจ ลองดูลักษณะการเขียนในรูปด้านล่าง

Regular Expression syntax from https://regexr.com/

4. ใช้ REGEXMATCH เพื่อทดสอบ Pattern

ทำความรู้จัก Function "REGEXMATCH" ใน Google Sheets

Syntax

REGEXMATCH(text, regular_expression)

text - The text to be tested against the regular expression.

regular_expression - The regular expression to test the text against.

REGEXMATCH Function Syntax

REGEXMATCH เป็น Function ที่ใช้ทดสอบ Pattern ของ Text ว่าตรงตามที่เราต้องการหรือไม่ ค่าที่ออกมาจะเป็น Boolean คือ

  1. Pattern ของ Text กับ Function ตรงกันค่าที่ได้ออกมาจะเป็น TRUE
  2. Pattern ของ Text กับ Function ไม่ตรงกันค่าที่ได้ออกมาจะเป็น FALSE

สร้าง Column ใหม่ชื่อ Positive Check และทดสอบ Positive Comment

เขียน Function REGEXMATCH ที่ Cell C2

Syntax

=REGEXMATCH(B2,"ชอบ")
##ทดสอบว่า Data ที่มีอยู่ใน B2 มีคำว่าชอบอยู่หรือไม่
##ถ้ามีให้แสดงเป็น TRUE ถ้าไม่มีให้แสดงเป็น FALSE

Using REGEXMATCH on a single word

Data ใน Cell B2 คือ "ชอบมากเลย บรรยากาศการทำงานที่นี่สนุก ทีมงานก็เป็นกันเอง" มีคำว่า "ชอบ" ดังนั้น Function REGEXMATCH จึง Return ค่า TRUE ออกมาใน Cell C2

Using REGEXMATCH on a single word

ใช้ REGEXMATCH, "|" , "( )" เพื่อเพิ่มคำในการทดสอบ Pattern

Syntax

=REGEXMATCH(B2,"ชอบ|สนุก|เป็นกันเอง|สบายดี|ไม่น่าเบื่อ|สวัสดิการดี")
##ทดสอบว่า Data ที่มีอยู่ใน B2 มีคำว่า ชอบ,สนุก,เป็นกันเอง,สบายดี,ไม่น่าเบื่อ,สวัสดิการดี อยู่หรือไม่
##ถ้ามีให้แสดงเป็น TRUE ถ้าไม่มีให้แสดงเป็น FALSE

Using REGEXMATCH with multiple words

หลังจากพิมพ์ Function นี้ลงไปใน Cell C2 ลากสูตรลงไปจนถึง Cell C7 เพื่อทดสอบว่า Pattern ใหม่ใช้งานปกติหรือไม่

Pattern ใหม่ที่เราทำลองสร้างขึ้นมาใช้งานได้ค่อนข้างถูกต้อง เพราะ Row ID ที่ 2, 4 และ 5 ไม่มีคำว่า ชอบ,สนุก,เป็นกันเอง,สบายดี,ไม่น่าเบื่อ,สวัสดิการดี จึง Return เป็น FALSE ออกมา

Good job!

ถึงขั้นตอนนี้แล้ว แสดงว่าถ้าใช้ Function นี้กับ Negative list ก็ได้ผลที่ถูกต้องเช่นกัน

Using REGEXMATCH with multiple words

ยังมีปัญหาอยู่

หากมี Sentiment words เพิ่มขึ้น เราต้องใส่ใน Function แบบ Manual อยู่เสมอ ซึ่งเป็นสิ่งที่ควรหลีกเลี่ยงเพราะมีโอกาสทำให้ Function ทำงานผิดพลาดได้ง่าย เรามาลองลดงาน Manual ใน Function กันเถอะ

5. สร้างชีทเพื่อรวม Sentiment Words

สร้างชีทและย้ายข้อมูล

สร้างชีทใหม่ชื่อ "wordlist" จากนั้น ย้าย Positive List และ Negative List จากชีท "data" มาในชีท "wordlist" ที่ทำหน้าที่เป็น Database รวบรวมทุกคำอยู่ในที่เดียว

Generate a new spreadsheet for the purpose of storing the sentiment words

6. รวม Sentiment Words ด้วย CONCATENATE

ขั้นตอนนี้ต้องสร้าง Column เพิ่ม คือ Concat Positive และ Concat Negative จากนั้นทำการรวม Sentiment words ต่างๆ ด้วย Function CONCATENATE

Syntax

CONCATENATE(string1, [string2, ...])

string1 - The initial string.

string2 ... - [ OPTIONAL ] - Additional strings to append in sequence.

CONCATENATE Function Syntax

CONCATENATE เป็น Function ที่ใช้ในการต่อ Text เข้าหากัน เพื่อรวม Text จาก Cell ต่างๆ ให้อยู่ใน Cell เดียว

เริ่มต้นการรวม Sentiment words

ใน Cell B3 ให้ใส่เป็น =A3 เพื่อดึงคำว่า "ชอบ" เป็นจุดเริ่มต้นของการรวม Positive list เช่นเดียวกับ Cell D3 ให้ใส่เป็น =C3 เพื่อดึงคำว่า "เครียด" เป็นจุดเริ่มต้นของการรวม Negative list

Set up the initial word for each sentiment list

ใช้ Function CONCATENATE

ใส่ Function ใน Cell B3 เพื่อรวม Text ของ Positive list

=CONCATENATE(B2, "|", A3)
##รวมข้อความใน B2 ต่อด้วย "|" ต่อด้วยข้อความใน A3

Result ที่ได้จะเป็น ชอบ|สนุก

ใส่ Function ใน Cell D3 เพื่อรวม Text ของ Negative list

=CONCATENATE(D2, "|", C3)
##รวมข้อความใน D2 ต่อด้วย "|" ต่อด้วยข้อความใน C3

Result ที่ได้จะเป็น เครียด|กังวล

Concat sentiment words for each list

ลากสูตรลงไปด้านล่างเพื่อให้ Function Apply ทุก Row ดูแล้วทุกอย่างก็ควรจะราบรื่นดี จนกระทั่งเจอ "|" โผล่ขึ้นมาแบบไม่หยุดหย่อน ส่งผลให้การรวม Data ของเรามีหน้าตาแปลกๆ

"|" is around us

แก้ปัญหาพายุ "|" ด้วย Function IF

ข้อสังเกต: เหตุการณ์นี้มักเกิดขึ้นจากการที่ Cell ด้านซ้ายเป็นค่าว่าง " "

ใช้ Function IF เพื่อใส่เงื่อนไขว่า ถ้า Cell ด้านซ้ายไม่มีข้อมูลให้แสดงผลเป็นค่าว่าง " "

Syntax

IF(logical_expression, value_if_true, value_if_false)

logical_expression - An expression or reference to a cell containing an expression that represents some logical value, i.e. TRUE or FALSE.

value_if_true - The value the function returns if logical_expression is TRUE.

value_if_false - [ OPTIONAL - blank by default ] - The value the function returns if logical_expression is FALSE.

IF Function Syntax

ถ้าอ่านแล้วงงไม่เป็นไร ลองเขียนเลยดีกว่า โดยเริ่มจาก Function ที่มีอยู่เดิมใน Cell B3

=CONCATENATE(B2, "|", A3)
##รวมข้อความใน B2 ต่อด้วย "|" ต่อด้วยข้อความใน A3

Existing function before adding IF

เติม IF เข้าไปใน Function เดิม

=IF(A3="","",CONCATENATE(B2, "|", A3)
##ถ้า A3 เป็นค่าว่าง ให้แสดงผลเป็นค่าว่าง แต่ถ้ารวมข้อความใน B2 ต่อด้วย "|" ต่อด้วยข้อความใน A3

Existing function after adding IF

เสร็จแล้วให้เราลาก Function ลงไปเรื่อยๆ จะเห็นว่าเราแก้ปัญหานี้ได้แล้ว Good Job!

Solve the problems of "|"

อย่าลืมเพิ่ม IF ใน Function ของ Concat Negative ใน Cell D3 ด้วย

=IF(C3="","",CONCATENATE(D2,"|",C3))
##ถ้า C3 เป็นค่าว่าง ให้แสดงผลเป็นค่าว่าง แต่ถ้ารวมข้อความใน D2 ต่อด้วย "|" ต่อด้วยข้อความใน C3

7. ดึงค่า Sentiment Words จากชีท "wordlist"

ปรับ Format ชีท "data" ให้เหลือแค่ 4 Columns

  • ID
  • Comment
  • Positive Check
  • Negative Check

ปรับแก้ Function REGEXMATCH

Function เดิม

=REGEXMATCH(B2,"ชอบ|สนุก|เป็นกันเอง|สบายดี|ไม่น่าเบื่อ|สวัสดิการดี")
##ทดสอบว่า Data ที่มีอยู่ใน B2 มีคำว่า ชอบ,สนุก,เป็นกันเอง,สบายดี,ไม่น่าเบื่อ,สวัสดิการดี อยู่หรือไม่
##ถ้ามีให้แสดงเป็น TRUE ถ้าไม่มีให้แสดงเป็น FALSE

Using REGEXMATCH with multiple words

💡
สิ่งที่เราต้องการ คือ การแทนค่า Regular Expression จากพิมพ์ Manual ให้กลายเป็นดึงจาก Cell ในชีท "wordlist"
Reduce manual word adding in regex function

เริ่มจากไหน?

ระบุ Cell ในชีท "wordlist" ที่ต้องการใช้ใน Function REGEXMATCH ในชีท "data"

8. ระบุ Cell เพื่อดึง Sentiment Words มาใช้แบบ Automate

ข้อสังเกต: Row สุดท้ายมักรวม Sentiment words มากที่สุด ทำให้ครอบคลุมที่สุดเช่นกัน

แล้วเราจะระบุ Row สุดท้ายยังไงดี?

Row สุดท้ายของ Column Concat Positive และ Concat Negative มีจำนวน Characters (ตัวอักษร) มากที่สุดใน Columns นั้นๆ จึงควรใช้ Function LEN เพื่อนับ Characters

The last row contains the biggest quantity of sentiment words

ใช้ Function LEN

Syntax

LEN(text)

text - The string whose length will be returned.

LEN Function Syntax

  • สร้าง Column "LEN Pos" ด้านขวาของ Column "Concat Positive"
  • สร้าง Column "LEN Neg" ด้านขวาของ Column "Concat Negative"

เพื่อใช้นับ Characters ของแต่ละ Column

ใน Cell C2 ให้ใช้ Function ArrayFormula + LEN ของ Concat Positive

=ArrayFormula(LEN(B2:B))
###นับจำนวน Characters ของ Cell ตั้งแต่ B2 ตลอดทั้ง Column

Calculate the number of characters in each row of positive words

ใน Cell F2 ให้ใช้ Function ArrayFormula + LEN ของ Concat Negative

=ArrayFormula(LEN(E2:E))
###นับจำนวน Characters ของ Cell ตั้งแต่ E2 ตลอดทั้ง Column

Calculate the number of characters in each row of negative words

การใช้ ArrayFormula มาครอบ Function LEN จะช่วยให้ใช้ Function แค่ Row เดียวแล้ว Apply ไปทุก Row ใน Column นั้นๆ ทำให้ง่ายต่อการ Maintain Function ในอนาคต

ArrayFormula + LEN Function

เมื่อเรานับ Characters ได้ครบทุก Cell ก็ถึงขั้นตอนการหา Cell ที่มีจำนวน Characters มากที่สุด ทั้งใน Column "LEN Pos" และ "LEN Neg"

ให้กด Shift ค้าง แล้วคลิกไปที่ Row ที่ 1 และ 2 ให้แถบสีน้ำเงินคลุมครบทั้งหมด

Multiple rows selection

คลิกขวาแล้วเลือก Insert 2 rows above เพื่อแทรก 2 Rows ใหม่ด้านบน

Insert 2 rows above
  • เพิ่ม Max และ Regex Pos ลงไปใน Cell B1 และ B2
  • เพิ่ม Max และ Regex Neg ลงไปใน Cell E1 และ E2
Add new data into column B and E

ใช้ Function MAX

Syntax

MAX(value1, [value2, ...])

value1 - The first value or range to consider when calculating the maximum value.

value2, ... - [ OPTIONAL ] - Additional values or ranges to consider when calculating the maximum value.

MAX Function Syntax

ใน Cell C1 ให้ใช้ Function MAX เพื่อหาจำนวน Characters ที่มากที่สุดของ LEN Pos

=MAX(C4:C))
##หาค่าที่มากที่สุดตั้งแต่ C4 ไปจนตลอด Column C

ใน Cell F1 ให้ใช้ Function MAX เพื่อหาจำนวน Characters ที่มากที่สุดของ LEN Neg

=MAX(F4:F))
##หาค่าที่มากที่สุดตั้งแต่ F4 ไปจนตลอด Column F
Find the max characters of each sentiment words

ทวนสิ่งที่เราจะทำอีกครั้ง

💡
สิ่งที่เราต้องการ คือ การแทนค่า Regular Expression จากพิมพ์ Manual ให้กลายเป็นดึงจาก Cell ในชีท "wordlist"
Reduce manual word adding in regex function

สิ่งที่เรามี

คือ จำนวน MAX Characters ดังนั้นเราต้องดึง Data ที่อยู่ในแถวเดียวกับค่า MAX ของทั้ง Positive และ Negative ด้วยการใช้ Function FILTER กรองข้อมูลให้เหลือตามเงื่อนไขที่เราต้องการ

ใช้ Function FILTER

Syntax

FILTER(range, condition1, [condition2, ...])

range - The data to be filtered.

condition1 - A column or row containing true or false values corresponding to the first column or row of range, or an array formula evaluating to true or false.

condition2 ... - [ OPTIONAL ] - Additional rows or columns containing boolean values TRUE or FALSE indicating whether the corresponding row or column in range should pass through FILTER. Can also contain array formula expressions which evaluate to such rows or columns. All conditions must be of the same type (row or column). Mixing row conditions and column conditions is not permitted.

condition arguments must have exactly the same length as range.

FILTER Function Syntax

  • ใน Cell C2 ให้ใช้ Function FILTER เพื่อดึง Data จาก Column B ที่มีค่า Max Characters = Cell C1 คือ 84
=FILTER(B4:B, C4:C=C1)
##กรองข้อมูลตั้งแต่ B4 ไปจนตลอดทั้ง Column โดยมีค่า Characters ตั้งแต่ C4 ไปจนตลอดทั้ง Column เท่ากับค่าที่อยู่ใน C1

จะเห็นได้ว่าเราได้ Result ที่ต้องการแล้ว

User FILTER Function for positive list

ให้เพิ่ม "( )" ใน Result เพื่อให้ Regular Expression สมบูรณ์ด้วย Function CONCATENATE ที่เคยใช้กันไปแล้ว

=CONCATENATE( "(", FILTER(B4:B, C4:C=C1), ")")
Add CONCATENATE Function
  • ใน Cell F2 ให้ใช้ Function FILTER เพื่อดึง Data จาก Column E ที่มีค่า Max Characters = Cell F1 คือ 12
=CONCATENATE( "(", FILTER(E4:E, F4:F=F1), ")")
User FILTER + CONCATENATE Function for negative list
💡
เท่านี้เราก็ได้ Cell ที่ต้องการดึงจากชีท "wordlist" ไปใช้ในชีท "data" เป็นที่เรียบร้อย คือ C2 สำหรับ Positive และ F2 สำหรับ Negative

9. ดึงข้อมูลเพื่อทดสอบ Sentiment Data

กลับมาที่ชีท "data" กันอีกครั้ง

Sheet "data"

ปรับ Function ของ Positive Check

คลิก Cell C2 เพื่อแก้ Function ให้ Refer Regular Expression ไปที่ Cell C2 ในชีท "wordlist"

Existing REGEXMATCH with manual regular expression

แก้ไขจาก

=REGEXMATCH(B2,"ชอบ|สนุก|เป็นกันเอง|สบายดี|ไม่น่าเบื่อ|สวัสดิการดี")
##ทดสอบว่า Data ที่มีอยู่ใน B2 มีคำว่า ชอบ,สนุก,เป็นกันเอง,สบายดี,ไม่น่าเบื่อ,สวัสดิการดี อยู่หรือไม่
##ถ้ามีให้แสดงเป็น TRUE ถ้าไม่มีให้แสดงเป็น FALSE

Using REGEXMATCH with multiple words

ให้เป็น

=REGEXMATCH(B2,wordlist!$C$2)
##ทดสอบว่า Data ที่มีอยู่ใน wordlist!$C$2 อยู่หรือไม่
##ถ้ามีให้แสดงเป็น TRUE ถ้าไม่มีให้แสดงเป็น FALSE

Using REGEXMATCH with referral regular expression

ข้อสังเกต: หากเราลากคลุมเฉพาะ wordlist!$C$2 เจ้า Google Sheets จะแสดงว่ามีค่าเป็นอะไรเพื่อแสดงว่า Refer ไปถูก Cell หรือไม่ ซึ่งเราทำถูกต้องแล้ว

REGEXMATCH Function refer regular expression from Cell C2 in word list sheet

ดึงข้อมูลมาใช้ใน Positive Check

เพิ่ม IF + ArrayFormula เพื่อให้ Function REGEXMATCH ไม่แสดงผลเมื่อ Data ใน Column B เป็นค่าว่าง และให้ Function Apply ทั้ง Column C

=ArrayFormula(IF(B2:B="","",REGEXMATCH(B2:B,wordlist!$C$2)))
Add IF + ArrayFormula

ดึงข้อมูลมาใช้ใน Negative Check

ดึงข้อมูลจาก wordlist!$F$2 มาใช้ใน Regular Expression และเพิ่ม IF + ArrayFormula เพื่อให้ Function REGEXMATCH ไม่แสดงผลเมื่อไม่มี Data ใน Column B และให้ Function Apply ทั้ง Column D

=ArrayFormula(IF(B2:B="","",REGEXMATCH(B2:B,wordlist!$F$2)))
REGEXMATCH Function refer regular expression from Cell F2 in word list sheet

Good Job!

เราได้ Column ที่ใช้ทดสอบ Sentiment ทั้ง Positive และ Negative แบบ Automate เป็นที่เรียบร้อย

Finished automated sentiment checker

10. สร้างเงื่อนไขให้ Positive, Neutral, Negative

สร้าง Column: Sentiment

Add "Sentiment" column

สร้างเงื่อนไขแบ่ง Sentiment

  1. ถ้า Column Comment (B) เป็นค่าว่างให้แสดงผลเป็น " "
  2. ถ้า Column Positive Check (C) = TRUE ให้แสดงผลเป็น "Positive"
  3. ถ้า Column Negative Check (D)= TRUE ให้แสดงผลเป็น "Negative"
  4. ถ้าเงื่อนไขไม่ตรงกับ Positive และ Negative ให้แสดงผลเป็น "Neutral"

เท่ากับว่ามี 4 เงื่อนไขที่แสดงผลใน Column Sentiment ที่เราสร้างขึ้น

ใช้ Function IFS

Syntax

IFS(condition1, value1, [condition2, value2, …])

condition1 - The first condition to be evaluated. This can be a boolean, a number, an array, or a reference to any of those.

value1 - The returned value if condition1 is TRUE.

condition2, value2, … - Additional conditions and values if the first one is evaluated to be false.

IFS Function Syntax

ใน Cell E2 ใส่ IFS เพื่อกำหนดเงื่อนไขตั้งแต่ข้อ 1 ถึง ข้อ 3

  1. ถ้า Column Comment (B) เป็นค่าว่างให้แสดงผลเป็น " "
  2. ถ้า Column Positive Check (C) = TRUE ให้แสดงผลเป็น "Positive"
  3. ถ้า Column Negative Check (D)= TRUE ให้แสดงผลเป็น "Negative"
=IFS(B2="","",C2=TRUE,"Positive",D2=TRUE,"Negative")

จะเห็นว่า Result ที่ได้คือ "Positive" เนื่องจากตรงเงื่อนไขที่ 2 คือ C2=TRUE

User IFS to add condition 1 to 3

อย่าลืมใช้ ArrayFormula เพื่อให้ Function นี้ Apply ได้เลยทั้ง Column

=ArrayFormula(IFS(B2:B="","",C2:C=TRUE,"Positive",D2:D=TRUE,"Negative"))

ในที่สุดก็สำเร็จ เอ้ยยยย ยัง!!! มี Cell ที่ยัง Error อยู่ เพราะยังไม่ได้กำหนดเงื่อนไขที่ 4

There are mistakes in certain rows

ใช้ Function IFERROR

Syntax

IFERROR(value, [value_if_error])

value - The value to return if value itself is not an error.

value_if_error - [ OPTIONAL - blank by default ] - The value the function returns if value is an error.

IFERROR Function Syntax

เพิ่ม IFERROR เพื่อกำหนดเงื่อนไขที่ 4 ให้แสดงผลออกมาเป็นค่า "Neutral"

=IFERROR(ArrayFormula(IFS(B2:B="","",C2:C=TRUE,"Positive",D2:D=TRUE,"Negative")),"Neutral")
The sentiment analysis task has been completed

ใช้ Conditional Formatting

ใส่สีให้แต่ละเงื่อนไขเพื่อเพิ่มความสะดวกในการใช้งาน

Format > Conditional Formatting
How to use conditional formatting

กำหนด Condition ให้ "Positive"

Apply to range = E2:E
Format rules = Text is exactly "Positive"
Formatting style = สีน้ำเงิน

จากนั้นกด Add another rule เพื่อเพิ่มอีก 2 เงื่อนไขที่เหลือ

Set condition for "Positive"

กำหนด Condition ให้ "Negative"

Apply to range = E2:E
Format rules = Text is exactly "Negative"
Formatting style = สีแดง

กำหนด Condition ให้ "Neutral"

Apply to range = E2:E
Format rules = Text is exactly "Negative"
Formatting style = สีเหลืองหรือเทา

จากนั้นกด Done ก็เสร็จเรียบร้อย

Done for condition setting

สร้างชีทสำเร็จแล้ว

ตอนนี้เราทำชีทที่ใช้ในการทำ Sentiment Analysis เรียบร้อยแล้ว!!

💡
สามารถเพิ่ม Data ใหม่ๆ ที่ต้องการทำ Sentiment Analysis ได้ในชีท "data" และเพิ่ม Word ใหม่ๆ เพื่อจัดกลุ่ม Sentiment ได้แม่นยำขึ้นในชีท "wordlist"
Sheets "data" and "wordlist"

วิธีการใช้งาน

1. เพิ่ม Data ใหม่เข้าไปในชีท "data"

เมื่อเพิ่ม Data เข้าไปแล้ว Column Sentiment จะแสดงผลว่า Data ในแต่ละ Row ถูกจัดอยู่กลุ่มไหน

Positive

Data ที่อยู่ในแถวนั้น มีคำที่เป็น Positive อยู่ในชีท "wordlist"

Negative

Data ที่อยู่ในแถวนั้น มีคำที่เป็น Positive อยู่ในชีท "wordlist"

Neutral

Data ที่อยู่ในแถวนั้น ไม่มีคำที่เป็น Positive หรือ Negative ที่อยู่ในชีท "wordlist" เลย

Add new data to "data" sheet

2. สังเกตแถวที่เป็น Neutral เพื่อเพิ่ม Word ใหม่เข้าไปในชีท "wordlist"

ID 11 น่าเบื่อมากเลย ต้องทำงานนอกเวลาบ่อยมาก

  • ควรเพิ่มคำว่า "น่าเบื่อ" และ "ทำงานนอกเวลาบ่อย" เข้าไปที่ Negative List

ID 13 วางแผนงานยากมาก มีงานแทรกตลอด

  • ควรเพิ่มคำว่า "งานยากมาก" และ "งานแทรกตลอด" เข้าไปที่ Negative List

ID 14 หัวหน้าเปลี่ยน direction บ่อยเกินไป งานไม่เป็นไปตามแผนที่วางไว้ในต้นปี

  • ควรเพิ่มคำว่า "เปลี่ยน direction บ่อย" และ "งานไม่เป็นไปตามแผน" เข้าไปที่ Negative List

ID 15 เพื่อนร่วมงานตลก ทำให้อยากทำงานด้วย

  • ควรเพิ่มคำว่า "เพื่อนร่วมงานตลก" และ "อยากทำงาน" เข้าไปที่ Positive List
Add new words to Positive and Negative list

3. ตรวจสอบ Function ที่อัพเดท Sentiment Words แล้วในชีท "data"

จะเห็นได้ว่า ID ที่ 11, 13, 14, 15 มีค่าใน Column "Sentiment" เปลี่ยนไปจากเดิมแล้ว

Function is updated

สรุป!

  • ผล Sentiment Analysis ไม่จำเป็นต้องเป็น "Positive" หรือ "Negative" เสมอไป ถ้าไม่มีเชิงบวกหรือเชิงลบ ก็ให้เป็นค่า "Neutral" ได้
  • การทำ Sentiment Analysis จะแม่นยำได้ต่อเมื่อเรามี Word List ที่มากพอ ดังนั้นยิ่งเรามี Data มากก็จะช่วยให้มี Word List ที่มากขึ้นเช่นกัน จำนวน Data จึงสำคัญมาก
  • หวังว่าบทความนี้จะเป็นประโยชน์ไม่มากก็น้อยสำหรับคนที่ต้องทำแบบสำรวจความคิดเห็นอยู่เป็นประจำ ลองเอาไปปรับใช้งานกันดูนะ!

แจก Template ตรงนี้

หากใครลองทำตามแล้วติดขัดตรงไหน ก็มาลองเอา Template ไปใช้ฟรีได้เลย

💡
เมื่อเข้ามาแล้วก็กด File > Make a copy กันตามสะดวกเลยจ้า
Sentiment Analysis: [Template]
data ID,Comment,Positive Check,Negative Check,Sentiment 1,ชอบมากเลย บรรยากาศการทำงานที่นี่สนุก ทีมงานก็เป็นกันเอง,Positive 2,เครียดนิดหน่อย ช่วงนี้งานเยอะ,Negative 3,สบายดี พอมีงานให้ทำเรื่อยๆ ไม่น่าเบื่อ,Positive 4,ปรับตัวกับระบบงานใหม่ได้แล้ว,Neutral 5,กังวลเรื่องการประเมินผลงาน,Negative 6,บริ…