常用字数统计-Haskell

时间:2019-01-03 23:11:17

标签: haskell

我正在使用Haskell进行一个小项目。我想计算一个段落或几个句子中的单词数,以及根据 牛津英语语料库(OEC)排名。

我有一些代码可以工作,但是我是Haskell的新手,需要一些帮助。

 <your code here>

 text = "the best book in the world is harry potter. my favourite author is 
 JK Rowling."

  main = do
   let wordCount = toWordCount text
   putStrLn "Report:"
   putStrLn ("\t" ++ (show $ length wordlist) ++ " words")
   putStrLn ("\t" ++ (show $ countCommonWords wordlist) ++ " common words")

预期结果应该是这样

 Report:
  15 words
   5 common words

希望帮助我开始使用这种新语言。

谢谢

到目前为止,我唯一能做的尝试是

 import Data.List (nub) 
 import Data.Char (toLower)

 toWordCount ns xs = map (\x -> length (filter (==x) xs)) ns
 nubl = nub . map (map toLower) -- to lowercase

 wordCount ws =  zip ns (countCommonWords ns ws)
 where ns = nubl ws

这是我所做的最佳尝试,任何解决方案都将有所帮助

1 个答案:

答案 0 :(得分:3)

由于您是Haskell和StackOverflow的新手,所以让我给您一些提示。完整的解决方案取决于您。

  • 首先,您需要删除标点符号,以避免is!is不同。检查filter功能
  • 一旦您的短语为“无标记”,您就可以计算出有多少个单词。检查功能words
  • 如果您有一个常用单词列表,可以将其与单词列表相交并计算两个列表中有多少个单词。检查Data.List库,您会发现有用的功能。

如果您堆积如山,请更新问题并发表您的尝试