FreqDist用于最常见的单词或短语

时间:2019-05-23 17:17:43

标签: python machine-learning nlp nltk tokenize

我正在尝试分析应用评论中的一些数据。

我想使用nltk的FreqDist查看文件中最频繁出现的短语。它可以是单个令牌或关键短语。 我不想标记数据,因为那样只会给我最频繁的标记。但是现在,FreqDist函数将每个评论作为一个字符串处理,而不是提取每个评论中的单词。

df = pd.read_csv('Positive.csv')

def pre_process(text):
    translator = str.maketrans("", "", string.punctuation)
    text = text.lower().strip().replace("\n", " ").replace("’", "").translate(translator)
    return text

df['Description'] = df['Description'].map(pre_process)
df = df[df['Description'] != '']

word_dist = nltk.FreqDist(df['Description'])

(“描述”是评论的正文/消息。)

例如,我想得到类似 最常用的字词: “我喜欢”,“有用”,“非常好的应用” 但是相反,我越来越 最常用的字词: “我非常喜欢这个应用程序,因为bablabla”(整个评论)

这就是为什么当我绘制FreqDist时得到这个:

enter image description here

1 个答案:

答案 0 :(得分:0)

TL; DR

使用object RestModule { fun Application.enititiesOne(userRepo: UserRepo) { routing { authenticate("jwt") { route("/entities1") { get { val principal = call.principal<UserPrincipal>() when(userRepo.hasAccessByRole(principal!!.roleId, "CAN_R_E1") { false -> call.respond(HttpStatusCode.Forbidden) true -> // some retrieval logic } post { val principal = call.principal<UserPrincipal>() when(userRepo.hasAccessByRole(principal!!.roleId, "CAN_W_E1") { false -> call.respond(HttpStatusCode.Forbidden) true -> // some update logic } } } } } } authenticate { val principal = call.principal<UserPrincipal() val rights = userRepo.rightsByRole(principal.roleId) when(routes) { get("/entities1/**") -> if(rights.contain("CAN_R_E1")) call.proceed else call.respond(HttpStatusCode.Forbidden) post("/entites1) -> rights.contain("CAN_W_E1") // similar get("/entities2/**") -> rights.contain("CAN_R_E2") // similar else -> call.respond(401) } }

ngrams