Диаграмма Венна из списка предложений

У меня есть список многих предложений в Excel в каждой строке столбца. У меня есть 3 или более столбца с такими предложениями. В них есть общие фразы. Можно ли создать скрипт для создания диаграммы Венна и получить общие для всех.

Пример: Это предложения в столбце. Точно так же есть разные столбцы.

Лимфоциты крови от рака

Лимфоциты крови больных

Опухоль яичника_Степень III

Опухоль брюшины_Степень IV

Гормонорезистентный PCA

Можно ли написать скрипт на питоне?


person user150674    schedule 02.10.2009    source источник
comment
Пожалуйста, завершите свой вопрос, также указав точный результат, который вы хотите получить, учитывая эти входные данные, в противном случае потребуется много догадок, чтобы интерпретировать ваши слова (например, во входном примере НЕТ общих слов; есть некоторые слова и последовательности слов, общих для двух — как бы вы хотели себя вести в этом случае, т. е. какой вывод вы хотите?).   -  person Alex Martelli    schedule 02.10.2009


Ответы (2)


Это моя интерпретация вопроса...

Дайте файл данных z.csv (экспортируйте свои данные из excel в файл csv)

"Blood lymphocytes from cancer","Blood lymphocytes from sausages","Ovarian tumor_Grade III"
"Blood lymphocytes from patients","Ovarian tumor_Grade III","Peritoneum tumor_Grade IV"
"Ovarian tumor_Grade III","Peritoneum tumor_Grade IV","Hormone resistant PCA"
"Peritoneum tumor_Grade XV","Hormone resistant PCA","Blood lymphocytes from cancer"
"Hormone resistant PCA",,"Blood lymphocytes from patients"

Эта программа находит предложения, общие для всех столбцов

import csv

# Open the csv file
rows = csv.reader(open("z.csv"))

# A list of 3 sets of sentences
results = [set(), set(), set()]

# Read the csv file into the 3 sets
for row in rows:
    for i, data in enumerate(row):
        results[i].add(data)

# Work out the sentences common to all rows
intersection = results[0]
for result in results[1:]:
    intersection = intersection.intersection(result)

print "Common to all rows :-"
for data in intersection:
    print data

И он печатает этот ответ

Common to all rows :-
Hormone resistant PCA
Ovarian tumor_Grade III

Не уверен на 100%, что это то, что вы ищете, но, надеюсь, это поможет вам начать работу!

Его можно было бы легко обобщить на любое количество столбцов, но я не хотел усложнять его.

person Nick Craig-Wood    schedule 02.10.2009

Ваш вопрос не совсем ясен, поэтому я могу неправильно понять, что вы ищете.

Диаграмма Венна — это всего лишь несколько простых операций над множествами. В Python все это встроено в тип данных Set. По сути, возьмите две группы элементов и используйте операции над наборами (например, используйте intersection для поиска общих элементов).

Чтобы прочитать данные, лучше всего сохранить файл в формате CSV и просто проанализировать его строковым методом split.

person Brian    schedule 02.10.2009