По столбцам Суммируйте несколько предложений, представленных в списке, используя суммирующее значение gensim. - PullRequest
0 голосов
/ 04 июля 2019

У меня есть набор данных, состоящий из идентификатора факультета и отзывов студентов относительно соответствующего факультета. Есть несколько комментариев для каждого факультета, и поэтому комментарии относительно каждого факультета представлены в виде списка. Я хочу применить обобщение по принципу gensim к столбцу «Комментарии» набора данных, чтобы сгенерировать сводку результатов преподавательского состава в соответствии с отзывами студентов.

Просто для ознакомления я попытался обобщить отзывы, соответствующие первому идентификатору факультета. В этом конкретном отзыве есть 8 различных комментариев (предложений), но gensim все равно выдает ошибку ValueError: вход должен содержать более одного предложения.

df_test.head()
    csf_id  comments
0   9   [' good subject knowledge.', ' he has good kn...
1   10  [' good knowledge of subject. ', ' good subjec...
2   11  [' good at clearing the concepts interactive w...
3   12  [' clears concepts very nicely interactive wit...
4   13  [' good teaching ability.', ' subject knowledg...
from gensim.summarization import summarize
text = df_test["comments"][0]
print("Text")
print(text)
print("Summary")
print(summarize(text))

ValueError: ввод должен содержать более одного предложения

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

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

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

df["comments"] = df["comments"].str.replace(",","").astype(str) df["comments"] = df["comments"].str.replace("[","").astype(str) df["comments"] = df["comments"].str.replace("]","").astype(str) df["comments"] = df["comments"].str.replace("'","").astype(str)

При этом все квадратные скобки и запятые будут удалены из списка, а обратная связь будет считаться одной строкой. Затем вы можете суммировать текст, присутствующий в строках кадра данных, используя:

from gensim.summarization import summarize summary = summarize(df["comment[i]"]) print(summary)

0 голосов
/ 04 июля 2019

для суммирования gensim, новой строки и полной остановки разделит предложение.

 from gensim.summarization.summarizer import summarize


summarize("punctual in time.") 

это вызовет ту же ошибку ValueError: ввод должен содержать более одного предложения

теперь, когда после полной остановки что-то есть, оно будет интерпретироваться как более чем одно предложение

summarize("punctual in time. good subject knowledge")     
#o/p will be blank string since the text is very small, and now you won't receive any error
''

Теперь, когда у вас возникла проблема, вам нужно объединить все элементы в одну строку

 #example
 import pandas as pd
df = pd.DataFrame([[["good subject."," punctual in time.","discipline person."]]], columns = ['comment'])

print(df)
    comment
0   [good subject., punctual in time, discipline ...

df['comment'] = df['comment'].apply(''.join)


df['comment'].apply(summarize) #this will work for you but keep in mind you have long text to generate summary 
...