วิธีสร้างรายการ stopwords ที่ดี


9

ฉันกำลังมองหาคำแนะนำเกี่ยวกับวิธีการจัดการรายการคำหยุด มีใครรู้ / ใครบ้างที่สามารถแนะนำวิธีการที่ดีในการแยกรายการคำหยุดจากชุดข้อมูลสำหรับการประมวลผลและการกรองล่วงหน้าได้หรือไม่?

ข้อมูล:

การป้อนข้อความของมนุษย์จำนวนมากที่มีความยาวผันแปร (searchterms และทั้งประโยค (สูงสุด 200 ตัวอักษร)) ในช่วงหลายปีที่ผ่านมา ข้อความประกอบด้วยสแปมจำนวนมาก (เช่นอินพุตจากบอตคำเดียวการค้นหาโง่การค้นหาผลิตภัณฑ์ ... ) และดูเหมือนว่าจะมีประโยชน์เพียงไม่กี่% เท่านั้น ฉันรู้ว่าบางครั้งผู้คนค้นหาด้านของฉันด้วยการถามคำถามเจ๋ง ๆ คำถามเหล่านี้เจ๋งมากฉันคิดว่ามันคุ้มค่าที่จะมองลึกลงไปในพวกเขาเพื่อดูว่าผู้คนค้นหาในช่วงเวลาใดและหัวข้อที่ผู้คนสนใจในการใช้เว็บไซต์ของฉัน

ปัญหาของฉัน:

คือฉันกำลังดิ้นรนกับการประมวลผลล่วงหน้า (เช่นการทิ้งสแปม) ฉันได้ลองใช้รายการคำหยุดจากเว็บ (NLTK เป็นต้น) แล้ว แต่สิ่งเหล่านี้ไม่ได้ช่วยตอบสนองความต้องการของฉันเกี่ยวกับชุดข้อมูลนี้

ขอบคุณสำหรับความคิดและการสนทนาของคุณ!


1
โมดูล Python NLTK ให้ข้อมูล stopwords และหากไม่ช่วยให้คุณให้ข้อมูลเพิ่มเติมเกี่ยวกับชุดข้อมูลของคุณได้ดีขึ้น ทำไมมันไม่เป็นประโยชน์ในกรณีของคุณ?
Kasra Manshaei

@ kasramsh: เมื่อฉันกรองสำหรับ SW เหล่านี้ฉันมีความประทับใจว่านี่ไม่ได้กรองสแปมออกอย่างมีนัยสำคัญ ฉันคิดว่าเหตุผลคือรายการเหล่านี้สร้างขึ้นจากข้อความธรรมดา (ไม่แน่ใจ) และดังนั้นจึงไม่สามารถใช้งานได้สำหรับคำค้นหาและเว็บไซต์ เช่นเดียวกับเมื่อคุณจัดกลุ่ม (ตามความคล้ายคลึงกันของสตริงการค้นหา) ฉันมีความรู้สึกว่าสแปมมีผลอย่างมากในระดับเอนโทรปีซึ่งจะเป็นการรวมผลลัพธ์สุดท้าย: - /
PlagTag

1
ผมคิดว่า @PlagTag stop wordsไม่เข้าใจสิ่งที่เป็น หยุด wrods เป็นรายการของคำที่พบมากที่สุดในบางภาษาเช่นI, the, aและอื่น ๆ คุณจะลบคำนี้ออกจากข้อความของคุณก่อนที่จะเริ่มฝึกอัลกอริทึมของคุณซึ่งลองระบุว่าข้อความใดเป็นสแปมหรือไม่ ไม่ได้ช่วยให้คุณระบุว่าข้อความใดเป็นสแปมหรือไม่มันสามารถให้อัลกอริทึมการเรียนรู้ของคุณดีขึ้น
itdxer

@itdxer ขอบคุณสำหรับความคิดเห็นของคุณ ฉันใช้คำว่า stopwords ที่นี่เพื่อขยายขอบเขตให้กว้างขึ้น (เพราะฉันคิดว่ามันอาจโอเคสำหรับวัตถุประสงค์) ขอบคุณสำหรับการแก้ไขปัญหา ;-)
PlagTag

คำตอบ:


5

วิธีหนึ่งคือใช้คะแนนtf-idf คำที่เกิดขึ้นในการค้นหาส่วนใหญ่จะเป็นความช่วยเหลือเล็กน้อยในการแยกความแตกต่างของคำค้นหาที่ดีจากคำที่ไม่ดี แต่สิ่งที่เกิดขึ้นบ่อยมาก (ความถี่สูง TF หรือคำศัพท์ความถี่) ในแบบสอบถามเพียงไม่กี่ (ความถี่สูง idf หรือเอกสารผกผัน) น่าจะมีความสำคัญในการแยกการค้นหาที่ดีจากคนเลว


ขอบคุณมากฉันจะลองอันนี้แล้วรายงานที่นี่!
PlagTag

จริง ๆ แล้วคะแนน IDF สูงเพียงอย่างเดียวจะทำเคล็ดลับ
CpILL

2

ขึ้นอยู่กับใบสมัครของคุณ

เมื่อคุณทำการสร้างแบบจำลองหัวข้อให้ลองใช้คำหยุดเริ่มต้นก่อน เมื่อมีคำบางคำที่เกิดขึ้นอย่างเด่นชัดในหลาย ๆ หัวข้อ (โปรดทราบว่าสูตรของฉันค่อนข้างคลุมเครือ) เป็นคำที่ดีสำหรับคำหยุดเพิ่มเติม

เช่นในคลังข้อมูลที่มีข้อความที่มีตัวเลขและวัสดุตารางคำว่า "รูป", "รูป", "แท็บ" หรือ "ตาราง" เป็นคำเสริมเพิ่มเติมที่ดี ในผลลัพธ์หัวข้อของคุณจะถูกกำหนดอย่างชัดเจนมากขึ้น


1

การใช้ TFIDF (ความถี่ของเอกสารคำผกผันคำศัพท์) จะช่วยแก้วัตถุประสงค์ของคุณ รับคะแนน TFIDF สำหรับแต่ละคำในเอกสารของคุณและเรียงลำดับคำตามคะแนนของพวกเขาซึ่งคุณสามารถเลือกคำสำคัญในข้อมูลของคุณ


1

วิธีที่ฉันใช้ในการสร้างรายการคำหยุดคือการสร้างและฝึกอบรมโมเดลการถดถอยโลจิสติก (เนื่องจากความสามารถในการตีความ) ของข้อมูลข้อความของคุณ รับค่าสัมบูรณ์ของสัมประสิทธิ์สำหรับแต่ละโทเค็น จากนั้นเรียงลำดับค่าสัมบูรณ์ของโทเค็นให้มากที่สุด จากนั้นสร้างรายการของโทเค็นทั้งหมดที่มีค่าสัมประสิทธิ์สัมบูรณ์สูงที่อาจนำไปสู่การ overfitting หรือที่อาจเป็นไปตามเกณฑ์อื่น ๆ ที่จะเป็นคำหยุด รายการนั้นเป็นรายการคำหยุดของคุณ จากนั้นคุณสามารถใช้รายการคำหยุดนั้นกับเอกสารชุดอื่น (ชนิดเช่นชุดทดสอบ) เพื่อดูว่าการลบออกจะเพิ่มความแม่นยำความแม่นยำหรือการเรียกคืนรูปแบบชุดทดสอบหรือไม่

กลยุทธ์นี้มีผลบังคับใช้เพราะคำนึงถึงผลกระทบของโทเค็นเมื่อสร้างรายการคำหยุด


0

Stopwords อาจเป็นส่วนหนึ่งของการแก้ปัญหาในบางจุด แต่ไม่ใช่กุญแจ ไม่ว่าในกรณีใด ๆ สำหรับภาษาหลัก ๆ ที่มีรายการคำหยุดที่ดีก็ไม่ควรระบุโดเมน

ฉันไม่คิดว่าการใช้ TD-IDF เพียงอย่างเดียวนั้นถูกต้องจริงๆ อาจมีคำที่หายาก (ขยะ) ในสตริงคุณภาพต่ำ

แทนที่จะพยายามเดาว่าคุณสมบัติที่แน่นอนมีประโยชน์: ฉันจะเริ่มต้นด้วยการสร้างชุดข้อมูลโดยการสุ่มเลือกข้อมูลบางส่วนและติดป้ายกำกับด้วยมือ (เป็นgoodหรือbadหรือในระดับตั้งแต่ 0.0 ถึง 1.0) จากนั้นโค้ดบางอย่างที่ดึงคุณสมบัติมากมาย (ความยาวจำนวนคำ (โทเค็น) คะแนนสแปมไม่ว่าจะมี URL หรือตัวอักษรพฤกษศาสตร์ภาษาที่ตรวจพบไม่ว่าจะมีเครื่องหมายคำถามหรือไม่ นอกจากนี้อย่าลืมที่จะรวมคุณสมบัติที่ไม่ใช่ภาษาที่คุณอาจมีเช่นประเทศของ geoIP ของผู้ใช้ที่ทำการสืบค้นไม่ว่าผู้ใช้จะเข้าสู่ระบบหรือไม่บัญชีผู้ใช้มีอายุเท่าไร ดังนั้น ณ จุดนี้คุณจะมีตาราง / CSV จำนวนมากและคอลัมน์ที่เล็กกว่าพร้อมคอลัมน์เพิ่มเติมอีกหนึ่งคอลัมน์สำหรับป้ายกำกับที่คุณเพิ่ม

จากนั้นฝึกอบรมชุดการเรียนรู้ของเครื่องด้วยตัวอย่างที่มีป้ายกำกับเพื่อสร้างแบบจำลองที่แม่นยำเพียงพอสำหรับคุณ จากนั้นให้โมเดลนั้นทำงานกับข้อมูลที่เหลือ

หากคุณต้องการที่จะไม่รหัสมากเกินไปคุณสามารถแม้เพียงแค่ได้รับคุณสมบัติเหล่านั้นลงในรูปแบบ CSV และให้พวกเขาไปที่อินเตอร์เฟซสเปรดชีต Prediction API ของ Google

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.