Basi c интеллектуальный анализ текста и ETL для BigQuery с Python - PullRequest
1 голос
/ 16 февраля 2020

В качестве упражнения мне нужно выполнить анализ текста с Python на заданном наборе данных: https://www.kaggle.com/bigquery/patentsview

Ожидаемые результаты:
- 3 наиболее популярные существительные в претензионном тексте, связанные с каждой категорией cpc_subsection.title
- наиболее ассоциированное существительное в заявочном тексте с каждой из 3 старших существительных. Ie. Наиболее ассоциированное существительное -> Самое популярное существительное -> Категория заголовка.

Мне удалось подключиться к этому набору данных, я могу просмотреть его содержимое.
Моя общая идея заключается в том, что я потребуется создать список для каждого «текстового» индекса, чтобы сравнить его позже с каждым индексом «заголовочных» строк. Затем al oop со счетчиком для каждого совпадения 'title'. Самые высокие 3 результата, перечисленные в конце.

Однако, после нескольких часов преодоления ошибок на каждом возможном этапе к этому моменту, я не могу понять, как должен выглядеть код для выполнения задачи.

Edit4: Хорошо Я создал код, который обеспечивает все совпадения в конце, но не разделяет их на конкретные существительные - только общие совпадения.

import bq_helper
import collections
from pandas import DataFrame
from bq_helper import BigQueryHelper
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "C:/Users/Jamba/BigQuery-45ba6cef6c37.json"
patentsview = bq_helper.BigQueryHelper(active_project="patents-public-data", dataset_name="patentsview")
bq_assistant = BigQueryHelper("patents-public-data", "patentsview")
tab = bq_assistant.head("cpc_subsection", num_rows=137)
tab2 = bq_assistant.head("claim", num_rows=10)

df = DataFrame(tab, columns=['title'])
title_list = df.values.tolist()

df2 = DataFrame(tab2, columns=['text'])
text_list = df2.values.tolist()

flat_list = []
for x in title_list:
    for noun in x:
        flat_list.append(noun)

text_in_cpc = []
for strings in flat_list:
    text_in_cpc = text_in_cpc + strings.split(';')

words_in_cpc = []
for strings in text_in_cpc:
    words_in_cpc = words_in_cpc + strings.split()

nouns_in_cpc = [s for s in words_in_cpc if s != 'OR' and s != 'OF' and s != 'TO' and s != 'IN' and s != 'A'
                and s != 'AND' and s != 'NOT' and s != 'FOR' and s != 'THAN' and s != 'THE' and s != 'FROM'
                and s != 'WITH' and s != 'BY' and s != 'AN' and s != 'ON' and s != 'THEIR' and s != 'VARIOUS']
print(nouns_in_cpc)

flat_list2 = []
for descriptions in text_list:
    for text in descriptions:
        flat_list2.append(text)

text_in_claim = []
for strings in flat_list2:
    text_in_claim = text_in_claim+strings.split()
print(text_in_claim)

TT1 = 0 #TOTAL TRUES
TF1 = 0 #TOTAL FALSES
for title in nouns_in_cpc:
    comparison = title.rstrip('.  ').lstrip().lower()
    for word in text_in_claim:
        if word.rstrip('.  ').rstrip(',  ').lstrip().lower() == comparison:
            TT1 = TT1+1
            print("comparing %s with %s: %s" % (word.rstrip('.  ').rstrip(',  ').lstrip().lower(), comparison,
                                                word.rstrip('.  ').rstrip(',  ').lstrip().lower() == comparison))
        else:
            TF1 = TF1+1
print(f'Falses: {TF1}')
print(f'Trues: {TT1}')

РЕДАКТИРОВАТЬ5: Это закончено для первого пункта. Я поделюсь кодом, когда смогу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...