读音押韵的英语单词_英文诗的押韵规律

(49) 2024-06-03 16:01:01

使用应用程序
新手注意:如果您从未编写过任何软件,而只是在寻找押韵词典,您仍然可以在 Windows10 上运行此应用程序。您只需下载上面的软件并将其解压缩到您的硬盘上。然后你需要找到可执行文件。

C:\-wherever-you-extracted-the-file\Rhymes\Rhymes\bin\Debug\Rhymes.exe

您可能希望创建一个快捷方式并将其保存在您的桌面上。

由于CodeProject将可下载文件大小限制为 10MB,因此该应用程序需要在您首次启动时构建其数据库。大约需要 10-15 分钟才能准备好,您会在表格工作时看到表格左上方闪烁的单词列表。一旦完成,它就可以随心所欲地押韵了。

只需在文本框中输入要押韵的单词,然后按 Enter。由于它使用语音算法,因此您的拼写不会像从预定义列表中查找单词那样重要。即使您拼错了单词,您也在尝试押韵(就像我经常做的那样),搜索结果会为您提供一个拼写正确的列表,这可能在将来对您有所帮助。您无需担心美式或英式拼写,也无需费力地争论它,而您只是在发挥创造力。

图 2

选项
MaxEntries - 您可以限制使用此选项显示的条目数。如果您的搜索找到的单词列表超过此限制,则该搜索“级别”(匹配结尾声音的数量)中的所有单词都不会显示。搜索像“this”这样的简短单词会给你大量的答案,这些答案会散布到整个地方所以我质疑你的诗歌是否需要帮助押韵“this”或“that”但是如果你必须......只需增加 MaxEntries你会发现一些东西。

图 3

通过增加该MaxEntries值,您可能会得到您要查找的结果:

图 4

UseClipBoard - 选中此框后,Microsoft 的“剪贴板”将在应用程序运行时每秒测试一次。如果您将文本“复制”或“剪切”到剪贴板,应用程序将使用您复制的文本作为搜索参数。当您在单独的文字处理器中工作并且不想切换应用程序时,这很方便。

TopMost - 选中此框将强制该应用程序位于您正在运行的其他应用程序的前面。您仍然可以使用文字处理器并进行写作,但是选中此选项并选中UseClipBoard选项后,您会很快看到押韵出现,只需“复制”您想要押韵的单词,而无需切换到应用程序本身。

编码
数据树是一棵三元树,树中的每个叶子都附有单词链表。由于在创建文件时所有数据都附加到文件末尾,并且每个数据项(树叶和链表项)都通过它们在同一文件中的地址进行引用,因此不需要累赘索引系统和不同的字长不影响存储和检索。Insert/方法都从树的Search 根部开始,并向下递增到构成被搜索词的签名的搜索键的数量。

树搜索关键字本身是按相反顺序排列的声音标签,从单词的末尾到前面。相似的声音具有相同的标签,三元树搜索的每个级别对应于从单词末尾算起的“声音”的数量。由于每个树键比较都是对对应于字母组合集合的任意分配的唯一数字 ID 号进行比较,因此这些比较本质上不是按字母顺序而是严格按数字进行的。

图 5

整个押韵词典及其三元树算法可以通过单个文件classRD_TernaryTree.cs合并到任何应用程序中。Linked-List 元素和 Tree-Leaves 都有单独的类,这些类处理Write使用Read长Addr整数来定位FileStream. 这些地址与记录为所有树的组件叶和列表的指针的地址相同。树插入和搜索方法都接收要插入/搜索的单词作为string参数。这Search()方法不仅返回一个与输入参数押韵的单词列表,而且返回一个递增相似单词列表的列表,这样第一个列表包含只有一个音节与搜索词押韵的单词,而下一个列表将有两个最后的音节与要求的押韵相似。

单词首先被“分解”成它的组成语音,并且声音列表被用作树的搜索键。在构建阶段,当每个词被添加到树叶的每个链表时,它通过使用前端插入树叶的链表来“下降”,这些链表包括具有相同语音签名的树,一直到搜索的级别(无论您正在查看的叶子是什么级别)。

例如 - 单词proposal和disposal将出现在两个连续的级别 ' al'(1) 和 ' pos'(2) 中,但将在下一个级别中分叉为两个单独的 ' pro'(3) 和 ' dis'(3) 级别。

用于对每个单词进行语音识别的不同声音存储在classSounds. 下面完整地显示了这一点。

C#
public class classSounds
{

    public List<string> lstText = new List<string>();  // similar sounding word snips
    static int intIDCounter = 0;                       // static ID counter
    int intID = intIDCounter++;                        // unique ID used as search 'key'
    public int ID { get { return intID; } }
    public classSounds() { }
    public classSounds(string strSound)
    {

        lstText.Add(strSound);
    }

    public classSounds(string[] strSounds)
    {

        lstText.AddRange(strSounds.ToArray<string>());
    }
}
搜索中使用的实际“密钥”是classSound实例的ID. static该值是在首次使用计数器整数变量创建时分配给它的唯一整数。此类的每个实例都在lstText变量中包含一个或多个字母组合。此类的整个实例集合分为三类:Prefix, Cluster& Suffix。

DissectWord()通过该方法将每个单词转换成语音签名。首先处理前缀和后缀组,并按照创建它们的顺序从分解词的头部和尾部取出。“簇”类型的列表取自单词的任何部分,并不像后缀/前缀列表那样仅限于它的尾部/头部。

C#
public static List<int> DissectWord(string strWord)
为了创建单词的语音签名,在 中定义的每个发现的字符系列都classSound被lstText方括号标记替换。

例如,有一个实例classSound:

编号 = 34
string其变量 ' ea' & ' ee'lstText
将用于将单词中字母 ' ea' 和 ' ee' 的每个实例替换为其对应的 'key-string' [34],它们位于被剖析的单词中。解剖完成后,string strWord该方法首先接收到的整个将被转换为它的等效系列 ' key-strings'(方括号ID中的数字按照它们在单词中出现的顺序排列)并且不再有任何字母,只有方括号和数字。然后Split在方括号中将它们放入一个包含数字的字符串数组中,classSounds ID然后将这些数字转换为整数值并返回给调用方法(三元树Search和Insert方法都使用DissectWord()) 以相反的顺序找到它们并用于遍历三叉树。

THE END

发表回复