मैं दिए गए csv फ़ाइल (एक अलग .txt फ़ाइल) से तटस्थ शब्द निकालना चाहता हूं, लेकिन मैं अजगर के लिए बिल्कुल नया हूं और फ़ाइल प्रबंधन के बारे में ज्यादा नहीं जानता। मुझे एक तटस्थ शब्द डेटासेट नहीं मिला, लेकिन इधर-उधर खोजने के बाद, मुझे यही पता चला।

यहाँ Gtihub प्रोजेक्ट है जहाँ से मैं डेटा निकालना चाहता हूँ (बस अगर किसी को पता होना चाहिए): hoffman-prezioso-projects/Amazon_Review_Sentiment_Analysis

Neutral Words
Word     Sentiment Score
a        0.0125160264947
the      0.00423728459134
it      -0.0294755274737
and      0.0810574365028
an       0.0318918766949
or      -0.274298468178
normal  -0.0270787859177

तो मूल रूप से मैं केवल उन शब्दों (पाठ) को सीएसवी से निकालना चाहता हूं जहां संख्यात्मक मान 0.something है।

0
ANiK3T 2 अप्रैल 2018, 19:18

4 जवाब

सबसे बढ़िया उत्तर

यहां तक ​​​​कि किसी भी पुस्तकालय का उपयोग किए बिना, आपके द्वारा उपयोग किए जा रहे सीएसवी के साथ यह काफी आसान है।

पहले फ़ाइल खोलें (मैं मान रहा हूँ कि आपके पास वेरिएबल filename में सहेजा गया पथ है), फिर readlines() फ़ंक्शन के साथ फ़ाइल को पढ़ें, और फिर आपके द्वारा दी गई शर्त के अनुसार फ़िल्टर करें।

with open(filename, 'r') as csv:                         # Open the file for reading
    rows = [line.split(',') for line in csv.readlines()] # Read each the file in lines, and split on commas
    filter = [line[0] for line in rows if abs(float(line[1])) < 1]   
                                                         # Filter out all lines where the second value is not equal to 1

यह अब स्वीकृत उत्तर है, इसलिए मैं एक अस्वीकरण जोड़ रहा हूं। बिना सोचे समझे इस कोड को अन्य CSV पर लागू न करने के कई कारण हैं।

  • यह संपूर्ण CSV को मेमोरी में पढ़ता है
  • इसका कोई हिसाब नहीं है उदा। के हवाले

यह बहुत ही सरल सीएसवी के लिए स्वीकार्य है लेकिन यहां अन्य उत्तर बेहतर हैं यदि आप निश्चित नहीं हो सकते कि सीएसवी इस कोड को तोड़ नहीं पाएगा।

1
bendl 3 अप्रैल 2018, 17:39

यहाँ केवल वेनिला लिबास के साथ ऐसा करने का एक तरीका है और पूरी फाइल को मेमोरी में नहीं रखना है

import csv

def get_vals(filename):
    with open(filename, 'rb') as fin:
        reader = csv.reader(fin)
        for line in reader:
            if line[-1] <= 0:
                yield line[0]

words = get_vals(filename)

for word in words:
    do stuff...
1
eagle 2 अप्रैल 2018, 17:47

इस तरह पांडा का प्रयोग करें:

import pandas
df = pandas.read_csv("yourfile.csv")
df.columns = ['word', 'sentiment']

भाव से शब्दों का चयन करना:

positive = df[df['sentiment'] > 0]['word']
negative = df[df['sentiment'] < 0]['word']
neutral = df[df['sentiment'] == 0]['word']
0
Mohammed Elmahgiubi 2 अप्रैल 2018, 16:28

यदि आप किसी अतिरिक्त पुस्तकालय का उपयोग नहीं करना चाहते हैं, तो आप csv मॉड्यूल के साथ प्रयास कर सकते हैं। ध्यान दें कि आपके मामले में delimiter='\t' भिन्न हो सकते हैं।

import csv

f = open('name.txt', 'r')
reader = csv.reader(f, delimiter='\t', quoting=csv.QUOTE_NONE)
for row in reader:
   if(float(row[1]) > 0.0):
      print(row[0] + ' ' row[1])
0
ljmocic 2 अप्रैल 2018, 16:33