Python NLTK - สร้าง 'พจนานุกรม' จากคลังข้อมูลและบันทึกแท็กตัวเลข

ฉันไม่ค่อยมีประสบการณ์กับ Python มากนัก แต่ฉันต้องการทำการวิเคราะห์ข้อมูลด้วยคลังข้อมูล ดังนั้นฉันจึงทำส่วนนั้นใน NLTK Python

ฉันต้องการดูเนื้อหาทั้งหมดและสร้างพจนานุกรมที่มีทุกคำที่ปรากฏในชุดข้อมูลคลังข้อมูล ฉันต้องการที่จะสามารถค้นหาคำในพจนานุกรมนี้และค้นหาจำนวนครั้งที่คำนี้ปรากฏเป็นส่วนใดของคำพูด (แท็ก) ตัวอย่างเช่น หากฉันต้องค้นหาคำว่า 'dog' ฉันอาจจะพบแท็กคำนาม 100 แท็ก และแท็กกริยา 5 แท็ก เป็นต้น

เป้าหมายสุดท้ายคือการบันทึกไฟล์นี้เป็น .txt หรืออะไรบางอย่างจากภายนอก แล้วโหลดมันในโปรแกรมอื่นเพื่อตรวจสอบความน่าจะเป็นของคำที่เป็นแท็กใด

ฉันจะทำสิ่งนี้กับ Counter และ ngrams หรือไม่


person Nate Cook3    schedule 07.06.2015    source แหล่งที่มา


คำตอบ (1)


เนื่องจากคุณเพียงต้องการ POS ของคำหลวม ๆ ที่คุณไม่ต้องการ ngram คุณจึงต้องมีคลังข้อมูลที่ติดแท็ก สมมติว่าคลังข้อมูลของคุณถูกแท็กแล้ว คุณสามารถทำเช่นนี้ได้

>>> from nltk.corpus import brown
>>> wordcounts = nltk.ConditionalFreqDist(brown.tagged_words())
>>> wordcounts["set"].tabulate(10)
VBN   VB   NN  VBD VBN-HL NN-HL 
159   88   86   71    2    2 

โดยพื้นฐานแล้ว ConditionalFreqDist นั้นเป็นพจนานุกรมของอ็อบเจ็กต์ Counter โดยมีการเพิ่มบางอย่างเข้าไป ลองค้นหาในเอกสาร NLTK

ป.ล. หากคุณต้องการทำให้คำของคุณเป็นแบบตัวพิมพ์เล็กและใหญ่ก่อนที่จะนับ ให้ใช้

wordcounts = nltk.ConditionalFreqDist((w.lower(), t) for w, t in brown.tagged_words())
person alexis    schedule 07.06.2015
comment
เอาล่ะดูเหมือนว่าจะทำงานได้ดีจริงๆ! ขอบคุณ! ฉันสามารถใช้ json เพื่อพิมพ์เนื้อหาของจำนวนคำไปยังไฟล์ข้อความได้หรือไม่ - person Nate Cook3; 07.06.2015
comment
json.dump(wordcounts, open(corpus_dict.txt,'w')) ส่งออกไฟล์ข้อความไร้สาระ ฉันคิดว่านี่เป็นเพราะมันเป็นคำสั่งของวัตถุเหรอ? - person Nate Cook3; 07.06.2015
comment
ฉันจะไม่ทราบ ฉันจะแปลกใจมากถ้า json ไม่จัดการกับพจนานุกรมที่ซ้อนกันและนั่นคือทั้งหมด - person alexis; 07.06.2015
comment
โอเค ฉันอยากรู้ ฉันลองแล้วและมันก็ดูถูกต้องตามกฎหมายอย่างสมบูรณ์ ลอง dump = json.dumps(wordcounts) และพิมพ์ dump[:100] - person alexis; 07.06.2015
comment
น่าสนใจ ฉันสามารถพิมพ์ dump[:100] ไปยังไฟล์ txt ได้ และมันให้ {\fawn\: {\NN\: 1}, \Ranavan\... แต่เมื่อฉันพิมพ์ดัมพ์ทั้งหมด ดูเหมือนว่าข้อความกำลังเป็นอยู่ เขียนไว้ด้านบนของข้อความ - person Nate Cook3; 08.06.2015
comment
คุณแน่ใจหรือว่าผลลัพธ์ไม่ถูกต้อง? คุณลองโหลดซ้ำแล้วหรือยัง? (หาก ดู ไม่ถูกต้อง ให้ลองโหลดดู) - person alexis; 08.06.2015
comment
ข้อความที่เขียนทับข้อความไม่ใช่ปัญหาที่เป็นไปได้ในการเขียนลงในไฟล์ ตามค่าเริ่มต้น json ของ python จะไม่ขึ้นบรรทัดใหม่หรือการเยื้อง ดังนั้นคุณคงไม่กังวลอะไรเลย - person alexis; 08.06.2015