相关疑难解决方法(0)

使用Python计算N Grams

我需要为包含以下文本的文本文件计算Unigrams,BiGrams和Trigrams:

"囊性纤维化仅影响美国3万名儿童和青少年.吸入盐水雾可减少充满囊性纤维化患者呼吸道的脓液和感染,但副作用包括令人讨厌的咳嗽和严酷的味道.这就是结论在本周出版的"新英格兰医学杂志"上发表的两项研究."

我从Python开始并使用以下代码:

#!/usr/bin/env python
# File: n-gram.py
def N_Gram(N,text):
NList = []                      # start with an empty list
if N> 1:
    space = " " * (N-1)         # add N - 1 spaces
    text = space + text + space # add both in front and back
# append the slices [i:i+N] to NList
for i in range( len(text) - (N - 1) ):
    NList.append(text[i:i+N])
return NList                    # return the list
# test code
for i in range(5):
print …
Run Code Online (Sandbox Code Playgroud)

python nlp nltk n-gram

23
推荐指数
4
解决办法
7万
查看次数

快速n-gram计算

我正在使用NLTK在语料库中搜索n-gram,但在某些情况下需要很长时间.我注意到计算n-gram在其他包中并不常见(显然Haystack有一些功能).这是否意味着如果我放弃NLTK,我的语料库中有更快的方法可以找到n-gram?如果是这样,我可以用什么来加快速度?

python nlp nltk n-gram

18
推荐指数
2
解决办法
1万
查看次数

如何使用spacy/nltk生成bi/tri-gram

输入文本总是菜名列表,其中有1~3个形容词和一个名词

输入

thai iced tea
spicy fried chicken
sweet chili pork
thai chicken curry
Run Code Online (Sandbox Code Playgroud)

输出:

thai tea, iced tea
spicy chicken, fried chicken
sweet pork, chili pork
thai chicken, chicken curry, thai curry
Run Code Online (Sandbox Code Playgroud)

基本上,我希望解析句子树并尝试通过将形容词与名词配对来生成二元词.

我想用spacy或nltk实现这一目标

python nlp nltk n-gram spacy

8
推荐指数
2
解决办法
9361
查看次数

python中TfidfVectorizer中n-gram的令牌模式

TfidfVectorizer是否使用python 正则表达式识别n-gram ?

在阅读scikit-learn TfidfVectorizer的文档时出现了这个问题,我看到在单词级别识别n-gram的模式是token_pattern=u'(?u)\b\w\w+\b'.我很难看到它是如何工作的.考虑bi-gram案例.如果我做:

    In [1]: import re
    In [2]: re.findall(u'(?u)\b\w\w+\b',u'this is a sentence! this is another one.')
    Out[2]: []
Run Code Online (Sandbox Code Playgroud)

我找不到任何双胞胎.鉴于:

    In [2]: re.findall(u'(?u)\w+ \w*',u'this is a sentence! this is another one.')
    Out[2]: [u'this is', u'a sentence', u'this is', u'another one']
Run Code Online (Sandbox Code Playgroud)

发现一些(但不是全部,例如u'is a',所有其他甚至计数的双字母都缺失).在解释\b字符函数时我做错了什么?

注意:根据正则表达式模块文档,re中\b字符应该是:

\ b匹配空字符串,但仅匹配单词的开头或结尾.单词被定义为字母数字或下划线字符的序列,因此单词的结尾由空格或非字母数字的非下划线字符表示.

我看到问题解决识别蟒蛇正克的问题(见1,2),所以次要的问题是:我应该这样做,我的文字喂养TfidfVectorizer前添加加入正克?

python regex n-gram scikit-learn

6
推荐指数
1
解决办法
2127
查看次数

如何从句子中提取字符ngram?-蟒蛇

以下word2ngrams函数从一个单词中提取字符3gram:

>>> x = 'foobar'
>>> n = 3
>>> [x[i:i+n] for i in range(len(x)-n+1)]
['foo', 'oob', 'oba', 'bar']
Run Code Online (Sandbox Code Playgroud)

这篇文章显示了单个单词的字符ngram提取,使用python快速实现字符n-gram

但是,如果我有句子并且想提取字符ngram,word2ngram()怎么办呢?

实现相同word2ngramsent2ngram输出的正则表达式版本是什么?会更快吗?

我试过了:

import string, random, time
from itertools import chain

def word2ngrams(text, n=3):
  """ Convert word into character ngrams. """
  return [text[i:i+n] for i in range(len(text)-n+1)]

def sent2ngrams(text, n=3):
    return list(chain(*[word2ngrams(i,n) for i in text.lower().split()]))

def sent2ngrams_simple(text, n=3):
    text = text.lower()
    return [text[i:i+n] for i in range(len(text)-n+1) if …
Run Code Online (Sandbox Code Playgroud)

python regex string nlp n-gram

5
推荐指数
1
解决办法
4061
查看次数

从字符串中获取所有可能的英文单词

从 python 中的给定字符串生成英语单词的所有可能组合。

输入:godaddy 输出:go、god、daddy、add、daddy

有什么好的图书馆吗?

python string nltk

2
推荐指数
1
解决办法
7007
查看次数

标签 统计

python ×6

n-gram ×5

nlp ×4

nltk ×4

regex ×2

string ×2

scikit-learn ×1

spacy ×1