Mathematica實現個性化閱讀之搜索感興趣的句子

個性化閱讀之搜索感興趣的句子


Background


在記憶複習單詞時,我希望看到的都是感興趣的句子,比如出自某一本精讀的書、課本,來加深印象。

曾經考慮過如果我去一家英相關的公司,那麼可以做一個內容推薦系統,給我推薦的學習材料都是我感興趣的,當然只是隨便想想。

搜索畢竟是一個主動的過程,雖然好多年前就實現類似的功能,但是自己也沒有形成規律地去使用這種方式,而推薦、推送則是一種被動的過程。

實現方式


假如你把文章全部放在印象筆記中,這不現實,內容太多,同步受限,少量的還行。 假如你不創建索引,搜索還是為慢。

Mathematica比較方便實現這個,以下內容幾分鐘就能實現。

Case


files = Select[FileNames["*.txt", "/Users/hypergroups/堅果雲/DocumentsFinal/ReadingDataBase", [Infinity]], StringFreeQ[#, "Matlab"] &];

index = CreateSearchIndex@files;

stringTrim := StringReplace[#, {"n" -> "", "----------" ~~ ___ ~~ "Page" ~~ ___ ~~ "-----------" -> ""}] &

searchWord[word_] := Block[{},resSearch = TextSearch[index, word];

resFile = Normal[resSearch][[1]][[1]]@"Location";

data = Import@resFile;

sentences = TextSentences@data;

stringTrim /@ Select[sentences, StringContainsQ[#, word] &]]

wordList = Import["/Users/hypergroups/堅果雲/常用文檔/Anki/wordlist/WordList-337@2017-11-02.txt", "Data"][[All, 1]];

words10 = wordList[[1 ;; 10]]

{bleak,brim,brisk,brittle,cathedral,cement,client,clip,competent,concede}

result = searchWord /@ words10[[1 ;; 10]];

highlightWord[str_, word_] := StringReplace[str, word -> ToString[Style[word, Red, FontSize -> 20], FormatType -> StandardForm]]

Framed /@ MapThread[highlightWord, {result[[All, 1]], words10}]

<< "/Users/hypergroups/Documents/Wolfram Mathematica/DeployProjects/MyMarkDown.m"

Notebook2Markdown[EvaluationNotebook[], "title" -> "words2sentence", "dirOutput" -> "/Users/hypergroups/Documents/MyMarkdown/知乎專欄/"]


推薦閱讀:

如何評價謝孟媛老師的kk音標和文法?
英文和中文的邏輯性哪個更強,為什麼?
英語一詞多義現象是怎麼產生的?現狀如何?有哪些有效途徑來提高理解效率?
英語語言學中的音素,音位,音位變體有什麼區別和聯繫?

TAG:WolframMathematica | 搜索引擎 | 英语 |