두 개의 CSV 파일을 비교하고 두 번째 열의 값이 일치하는지 확인하고 일치 할 때 각 값의 발생 횟수를 계산하려면 어떻게해야합니까?

어쩌구

두 개의 CSV 파일을 반복하고 두 파일의 값이 일치하는지 확인하고 일치 할 때 각 값에 대해 발생하는 횟수를 계산하고 싶습니다. 출력은 사전이어야합니다.

따라서 정렬 된 두 개의 CSV 파일이 있습니다. 각 열에는 "WORD"및 "POS"(음성 태그의 일부)의 2 개 열이 있습니다. 파일 1의 예를 보려면 클릭하십시오. 파일 2의 예를 보려면 클릭하십시오.

어떤 경우에는 각 단어가 두 파일에 대해 동일한 방식으로 레이블이 지정되었지만 다른 많은 경우에는 그렇지 않습니다. 두 파일에 대해 동일한 방식으로 레이블이 지정된 횟수를 계산하고 싶습니다.

예를 들어, file1에 WORD "human"및 POS "PERS"가 있고 file2에도 WORD "human"및 POS "PERS"가있는 경우 출력은 다음과 같습니다. {PERS : 2} 이는 PERS가 둘 다에서 두 번 일치 함을 의미합니다. 파일. 각 태그에 대해 다음과 같이합니다. {TAG1 : n 번 표시되고 둘 다 일치, TAG2 : 표시되고 둘 다 일치하는 횟수 등}

이 코드를 사용하여 하나의 CSV 파일 을 읽고 각 POS 태그가 사용 된 횟수를 계산하는 방법 만 알아낼 수있었습니다 .

import csv 
from collections import defaultdict


def count_NER_tags(filename): 
    """
    Obtains the counts of each tag for the determined csv file  

    """

    dict_NER_counts = defaultdict(int) 

    with open(filename, "r") as csvfile:
        read_csv = csv.reader(csvfile, delimiter="\t")
        next(read_csv) #skip the header 
        for row in read_csv:
             dict_NER_counts[row[2]] += 1

        return dict_NER_counts


output: 
{'O': 42123, 'ORG': 2092, 'LOC': 2094, 'MISC': 1268, 'PERS': 3145}

두 CSV 파일을 모두 읽은 후 "if POS in file1 == POS in file2"를 구현 한 다음 위의 코드에 예시 된대로 카운트를 사전에 추가하는 방법을 모르겠습니다.

Martineau

그의는 것처럼 날 것으로 보인다 - 나는 같은 단어가 두 파일에서 같은 POS 하나의 두 경기 대신 호출하고있을 때 조금 이상한 것을 발견 일치합니다.

뭐든간에 ... 다음은 당신이 원하는 것을 할 것이라고 생각합니다 (당신이 올바르게하고 싶은 것을 이해했다면).

import csv
from collections import defaultdict

def count_tag_matches(filename1, filename2):
    """
    Counts the number of tags that had the same value in both CSV files.
    """
    dict_counts = defaultdict(int)

    with open(filename1, "r", newline='') as csvfile1, \
         open(filename2, "r", newline='') as csvfile2:

        reader1 = csv.DictReader(csvfile1, delimiter="\t")
        reader2 = csv.DictReader(csvfile2, delimiter="\t")

        for row1, row2 in zip(reader1, reader2):
             if row1['POS'] == row2['POS']:
                 dict_counts[row1['POS']] += 2

    return dict(dict_counts)  # Return a regular dictionary.

counts = count_tag_matches('cmp_file1.csv', 'cmp_file2.csv')
print(counts)

샘플 파일 처리의 출력 :

{'A': 2, 'O': 2, 'PERS': 2}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관