1. 程式人生 > >Forth 詞典和詞彙

Forth 詞典和詞彙

     詞典是 FORTH 系統的主幹,他是系統中全部詞以一定的方式連結而成。     FORTH 系統,詞典本身也是被當做一個堆疊來對待。由一個稱為 詞典指標的變數 DP 指著詞典上方(高階地址)空白區域的第一個位元組,也既下一個可被使用的位元組。詞 HERE 則把 DP 的值送到引數堆疊的棧頂
VARIABLE  DP           使用者變數,其值為詞典上部第一個可被使用的記憶體地址。
:  HERE    ( - addr )  DP  @  ;    返回詞典上方的地址,它告訴編譯程式待用的自由存貯區域始於何處
:  ALLOT  ( n - )  DP  +!  ;          使 DP 之值增加 n,也即為了某種目的給詞典的區域增加 n 個位元組。
:   ,   ( n - )  HERE  !  2  ALLOT ; 把引數堆疊頂上的數 n 送入到詞典上部的下一個可用單元,使 DP 之值增加 2 。(把 n 編入詞典)
:  C,  ( byte - )  HERE  C!  1  ALLOT  ;

   詞典是由一些在邏輯上獨立的詞表所構成。把一組在邏輯上密切相關的詞所連結形成的詞表稱為是一個 詞彙CONTEXT  ( - addr )  是一個數組,由它決定首先搜尋哪一個詞彙,接著搜尋哪幾個詞彙(如果沒找到的話)。 CURRENT  ( - addr )  是一個變數,由它決定新新增到詞典中的定義屬於哪一個詞彙。在 Fig-Forth 中它還決定繼 CONTEXT 詞彙之後所要搜尋的詞彙,如果指定詞在 CONTEXT 詞彙中沒有找到。

Fig-Forth 中詞典搜尋
INTERPRET -> -FIND -> (FIND)
:  INTERPRET  ( - )      逐個順序處理從輸入流中分離出來的字串;或是執行或是編譯由當時系統的狀態決定。
       BEGIN         開始解釋程式迴圈
            -FIND  ( - pfa b tf , or ff )       把從輸入流中檢測到的下一個字串送到 HERE 處。首先搜尋 context 詞彙,繼之搜尋 current 詞彙,核實在詞典中是否有與在 HERE 處的字元串同名的定義。若有,被找到之詞的引數域地址 pfa,長度位元組 b 及為真標誌 tf 留在堆疊上;若沒有,堆疊上僅留下為假標誌 ff 。 
       AGAIN  ;  

:  -FIND  ( - pfa b tf , or ff )
            BL  WORD     把以空格為終止符的下一個字串從輸入流中分離出來,並將它送到詞典的頂部(HERE 處)
            HERE    有待去詞典中發現的字串的地址
            CONTEXT  @  @   取出在 context 詞彙中最後一個(最新)一個被定義詞的名字域地址 nfa ,詞典搜尋行將開始。
            (FIND)   (addr1 addr2 - pfa b tf , or ff)  CODE 詞,承擔具體搜尋工作。addr1是有待被搜尋的字串的地址,addr2是被搜尋區的起始地址。(FIND) 從堆疊頂上給出的地址出發搜尋詞典,以求發現和堆疊上的第二個地址(addr1)處的字串相符合的名字。若找到,返回相符定義的 pfa , 長度位元組以及為真標誌。若未找到則僅返回一個假標誌。
            DUP  0=    檢查棧頂標誌。
            IF           在 context 詞彙中未找到同名的定義
                 DROP       丟棄假標誌
                 HERE          重新取得字串的地址。
                 CURRENT  @  @          取出在 current 詞彙中最後一個被定義的詞的 nfa。
                 (FIND)           搜尋 current 詞彙。
            ENDIF  ;
    // Fig-Forth 中首先搜尋 context 詞彙,以求發現一個同名定義,若沒有則在搜尋 current 詞彙。一個 詞彙是由定義詞 VOCABULARY 創立的,故一個 詞彙的詞彙名本身也是詞典中的一個條目。在一個 詞彙名的引數域中儲存有該詞彙中最後一個被定義的詞的名字域地址 nfa ,而 儲存該最後一個詞的 nfa 的單元是被 CONTEXT 或 CURRENT 所指著,如果該詞彙是 context 詞彙或 current 詞彙的話。所以在 -FIND 中,CONTEXT @ @ 以及 CURRENT @ @ 提供將被搜尋的詞彙中的第一個詞。

相關推薦

Forth 詞典詞彙

body, table{font-family: 微軟雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;}

在Hanlp詞典jieba詞典中手動新增未登入詞

在使用Hanlp詞典或者jieba詞典進行分詞的時候,會出現分詞不準的情況,原因是內建詞典中並沒有收錄當前這個詞,也就是我們所說的未登入詞,只要把這個詞加入到內建詞典中就可以解決類似問題,如何操作呢,下面我們來看一下: 一,在Hanlp詞典中新增未登入詞 1.找到hanlp內建詞典目錄

《introduction to information retrieval》資訊檢索學習筆記3 詞典容錯式檢索

第3章 詞典和容錯式檢索 3.1 用於詞典的搜尋結構 給定一個反向索引和一個查詢,我們的第一個任務是確定每個查詢詞是否存在於詞彙表中,如果是,則返回指向相應倒排記錄表的指標。涉及在資料結構中定位詞項。 資料結構:字典(dictionary ) 兩個解決方案:雜湊

python 之計算詞典詞頻矩陣

 詞典構造:每個單詞對應一個數字ID 。words列表裡的單詞排序,不知道以何原理。 詞頻矩陣:col 數為單詞的個數,列數為文字的個數。 from collections import Counter from itertools import chain import nump

【NLP】Python NLTK獲取文字語料詞彙資源

作者:白寧超 2016年11月7日13:15:24 摘要:NLTK是由賓夕法尼亞大學計算機和資訊科學使用python語言實現的一種自然語言工具包,其收集的大量公開資料集、模型上提供了全面、易用的介面,涵蓋了分詞、詞性標註(Part-Of-Speech tag, POS-tag)、命名實體識別(Name

獲得文字語料詞彙資源(一)

#python3 import nltk nltk.corpus.gutenberg.fileids()#古騰堡專案 emma=nltk.corpus.gutenberg.words('austen-e

奮戰聊天機器人(二)語料詞彙資源

當代自然語言處理都是基於統計的,統計自然需要很多樣本,因此語料和詞彙資源是必不可少的 1. NLTK語料庫 NLTK包含多種語料庫,比如:Gutenberg語料庫 nltk.corpus.gutenberg.fileids() nltk.cor

python呼叫jieba(結巴)分詞 加入自定義詞典去停用詞功能

#!/usr/bin/python #-*- encoding:utf-8 -*- import jieba #匯入jieba模組 import re jieba.load_userdict("newdict.t

Linux命令應用大詞典-第8章 日期時間

硬件時鐘 顯示 linu 時鐘 主機 style hwclock 硬件 暫停 8.1 cal:顯示日歷信息 8.2 date:顯示和設置系統日期和時間 8.3 hwclock:查看和設置硬件時鐘 8.4 clock:查看和設置硬件時鐘 8.5 clockdiff:主機之間

Linux命令應用大詞典-第 15章 文件、目錄權限屬性

pos pan span 所有 -c get hat 5.4 屬性 15.1 chmod:更改文件和目錄的模式 15.2 chown:更改文件和目錄的用戶所有者和組群所有者 15.3 chgrp:更改文件或目錄的所屬組 15.4 umask:顯示和設置文件及目錄創建默認權

Linux命令應用大詞典-第43章iptablesarptables防火墻

linu font 防火墻 保存 gpo ipv body table 數據包 43.1 iptables-save:保存iptables規則 43.2 iptables-restore:恢復iptables規則 43.3 iptables:IPv4數據包過濾和NAT管理

Linux命令應用大詞典-第36章 密碼證書管理

slap HA 命令行工具 詞典 管理員 style iges 證書 創建 36.1 pwdhash:密碼哈希生成器 36.2 mkpasswd:生成應用於用戶的新密碼 36.3 keytool:密鑰和證書管理工具 36.4 certutil:證書服務器管理工具 36.5

Linux命令應用大詞典-第21章 LVMRAID管理

數據 命名 reat color 轉換 VG 邏輯 LV lvresize 21.1 pvcreate:創建物理卷 21.2 pvscan:列出找到的物理卷 21.3 pvdisplay:顯示物理卷的相關屬性 21.4 vgcreate:創建卷組 21.5 vgscan

720. 詞典中最長的單詞(any()all()的用法)

any()是所有內容全是0,空,false才返回False。一旦有一個元素不是其中之一,就返回True。 all()是要求全部元素都不是0,空,false,一旦有一個元素是其中之一,就返回False。  python獲取最長單詞的方法:https://b

製作英文學習詞典。編寫程式製作英文學習詞典詞典有3個基本功能:新增、查詢退出。程式讀取原始檔路徑下的txt格式詞典檔案,若沒有就建立一個(Python)

以下路徑可更換為你自己的路徑,本程式採用Python語言大致實現了serach()查詢函式和add()新增函式。細節有待完善,謝謝 def search(): w=input("請輸入要查詢的單詞:") fr=open("C:\\Users

第五章 分類標註詞彙 ----5.1、5.2節

將詞彙按它們的詞性(parts-of-speech,POS)分類並相應地對他們進行標註,這個過程叫做詞形標註(POS tagging)或者標註。詞性也成為詞類,在本章中重點是利用標記和自動標註文字。 5.1使用詞性標註器 詞形標註器處理一個詞序列,為每個詞附加的

Python自然語言處理 5 分類標註詞彙

目標: (1)什麼是詞彙分類,在自然語言處理中它們如何使用? (2)對於儲存詞彙和它們的分類來說什麼是好的Python資料結構? (3)如何自動標註文字中每個詞彙的詞類? 基本技術,包括序列標註,N-gram模型,回退和評估 一 使用詞性標註器 text = nltk.w

敏捷DevOps詞彙

本詞彙表是旨在說明敏捷與DevOps中各種術語。 由於敏捷與DevOps存在緊密的聯絡,在講述DevOps時需要引用到大量的來自敏捷的詞彙,因此本文試圖做些整理 詞彙名稱 對應英文

基於python的自然語言處理 分類標註詞彙之5.5N-gram標註

一元標註器unigram tagging一元標註器利用一種簡單的統計演算法,對每個識別符號分配最有可能的標記。建立一元標註器的技術稱為訓練。>>> fromnltk.corpus import brown>>> importnltk>

Python自然語言處理------分類標註詞彙

寫在前面一篇讀書筆記。1. 使用詞性標註器將詞彙按它們的詞性(parts-of-speech,POS)分類以及相應的標註它們的過程被稱為詞性標註(part-of-speech tagging, POS tagging)或乾脆簡稱標註。詞性也稱為詞類或詞彙範疇。用於特定任務的標