【问题标题】:count word appear alphabetically计数单词按字母顺序出现
【发布时间】:2019-10-10 08:43:22
【问题描述】:

在文本处理任务中,首先要做的事情之一是弄清楚每个单词在给定文档中出现的频率。在此任务中,您将完成一个函数,该函数返回标记化 word 文档的唯一词频。

编写代码来完成 count_frequencies 函数。输入参数 (arr) 是一个字符串列表,表示一个标记化的 word 文档。示例输入如下所示:

['the', 'dog', 'got', 'the', 'bone']

您的 count_frequencies 函数应该返回一个元组列表,其中元组中的第一个元素是来自 arr 的唯一单词,而第二个元素是它在 arr 中出现的频率。返回的列表应按每个元组的第一个元素按字母顺序排序。对于上面的例子,正确的输出应该是下面的元组列表:

**[('bone', 1), ('dog', 1), ('got', 1), ('the', 2)]**

下面显示了更多示例(带有解决方案):

**Input: ['we', 'came', 'we', 'saw', 'we', 'conquered']**
**Solution: [('came', 1), ('conquered', 1), ('saw', 1), ('we', 3)]**
**Input: ['a', 'square', 'is', 'a', 'rectangle']**
**Solution: [('a', 2), ('is', 1), ('rectangle', 1), ('square', 1)]**

您可以在输入文本框中编写自己的测试用例。 在这种情况下,您的测试用例应该是空格分隔的单词,代表 count_frequencies 函数的输入列表。

【问题讨论】:

标签: python text nlp processing


【解决方案1】:

你可以通过collections.Counter来使用这个简单的函数:

from collections import Counter

def count_words(list_of_words):
    return sorted(Counter(list_of_words).items())

>>> count_words(['we', 'came', 'we', 'saw', 'we', 'conquered'])

# [('came', 1), ('conquered', 1), ('saw', 1), ('we', 3)]

【讨论】:

  • 完美的解决方案,但作为老师,我会给它零分。 ;)
  • @anmol 因为你刚刚把作业放到了 SO 上。你还没有发布你已经尝试过的东西,如果你被困在某个地方。而在得到答案之后,你甚至都没有选择它并关闭了问题。
  • 这实际上并不会产生您声称的输出。您在任何地方都没有对计数进行排序,而是您声称的输出是 Counter(list_of_words).most_common() 返回的内容。 actual 输出产生的好处是 OP 一开始就要求的。
猜你喜欢
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
  • 2018-07-13
  • 1970-01-01
相关资源
最近更新 更多