Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ค้นหาความถี่ของแต่ละคำในสตริงใน Python


ในส่วนหนึ่งของการวิเคราะห์ข้อความ เรามักจะต้องนับคำและกำหนดน้ำหนักให้กับคำเหล่านั้นสำหรับการประมวลผลในอัลกอริธึมต่างๆ ดังนั้นในบทความนี้ เราจะมาดูกันว่าเราจะหาความถี่ของแต่ละคำในประโยคที่กำหนดได้อย่างไร เราสามารถทำได้สามวิธีดังที่แสดงด้านล่าง

การใช้ตัวนับ

เราสามารถใช้ Counter() จากโมดูลคอลเลกชันเพื่อรับความถี่ของคำ ที่นี่ก่อนอื่นเราใช้ split() เพื่อสร้างคำจากบรรทัดแล้วใช้ most_common ()

ตัวอย่าง

from collections import Counter
line_text = "Learn and practice and learn to practice"
freq = Counter(line_text.split()).most_common()
print(freq)

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

[('and', 2), ('practice', 2), ('Learn', 1), ('learn', 1), ('to', 1)]

การใช้ FreqDist()

ชุดเครื่องมือภาษาธรรมชาติมีฟังก์ชัน FreqDist ซึ่งแสดงจำนวนคำในสตริง ตลอดจนจำนวนคำที่แตกต่างกัน การใช้ most_common() จะทำให้เรามีความถี่ของแต่ละคำ

ตัวอย่าง

from nltk import FreqDist
text = "Learn and practice and learn to practice"
words = text.split()
fdist1 = FreqDist(words)
print(fdist1)
print(fdist1.most_common())

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

<FreqDist with 5 samples and 7 outcomes>
[('and', 2), ('practice', 2), ('Learn', 1), ('learn', 1), ('to', 1)]

การใช้พจนานุกรม

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

ตัวอย่าง

text = "Learn and practice and learn to practice"
words = []
words = text.split()
wfreq=[words.count(w) for w in words]
print(dict(zip(words,wfreq)))

การเรียกใช้โค้ดด้านบนทำให้เราได้ผลลัพธ์ดังต่อไปนี้:

{'Learn': 1, 'and': 2, 'practice': 2, 'learn': 1, 'to': 1}