繁体   English   中英

如何将文本拆分为 N-gram 并获得它们的偏移量

[英]How to split a text into N-grams and get their offset

我想将文本拆分为 ngram,但还要在文本中获取它们的偏移量。
我目前在 Python 中使用 NLTK 库,但我没有找到任何本机方法来获取 N-gram 的偏移量。
我确实找到了这个答案,但我想知道是否有任何图书馆可以提供这个而不必实现它。 我的问题是我想拆分的文本中多次出现相同的 N-gram。

示例用法是:

    ngrams_with_offset("I like apples and I like oranges", 2)
    >>> [("I", "like", offset=0), 
         ("like", "apples", offset=2),
          ....... 
          ("I", "like", offset=18),
          ..... ]

我没有找到任何本地方法来执行此操作,因此我使用 NLTK 中的 align_tokens() 函数实现了自己的方法以适合我的用例。
它类似于这样的东西:

tokenized_text = [word for word in word_tokenize(text) if word.lower() not in stopwords]
alignment = align_tokens(tokenized_text, text)
tokenized_with_offset = [(tokenized_text[i], alignment[i]) for i in range(len(alignment))]
ngrams(tokenized_with_offset, n)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM