Python和nGrams

时间:2017-08-14 15:03:47

标签: python syntax nltk aster

Aster用户在这里尝试完全转移到python以进行基本文本分析。 我试图使用nltk或其他模块在Python中复制ASTER ngram的输出。我需要能够为1到4的ngrams执行此操作。输出到csv。

数据:

Unique_ID, Text_Narrative

需要输出:

Unique_id, ngram(token), ngram(frequency)

示例输出:

  • 023345“我”1
  • 023345“爱”1
  • 023345“Python”1

2 个答案:

答案 0 :(得分:0)

出于教育原因,我只用python的标准库编写了这个简单版本。

生产代码应使用spacypandas

import collections
from operator import itemgetter as at
with open("input.csv",'r') as f:
    data = [l.split(',', 2) for l in f.readlines()]
spaced = lambda t: (t[0][0],' '.join(map(at(1), t))) if t[0][0]==t[1][0] else []
unigrams = [(i,w) for i, d in data for w in d.split()]
bigrams = filter(any, map(spaced, zip(unigrams, unigrams[1:] )))
trigrams = filter(any, map(spaced, zip(unigrams, unigrams[1:], unigrams[2:])))
with open("output.csv", 'w') as f:
    for ngram in [unigrams, bigrams, trigrams]:
        counts = collections.Counter(ngram)
        for t,count in counts.items():
            f.write("{i},{w},{c}\n".format(c=count, i=t[0], w=t[1]))

答案 1 :(得分:0)

正如其他人所说的那样,这个问题非常模糊,但是因为你是新来的,所以这是一个很长的指南。 : - )


$ curl -k https://localhost:8080/health