iT邦幫忙

0

關於文字資料的調整-尋找取代某些特定名詞

ebag 2010-06-13 21:56:546901 瀏覽

前面幾個問題都承蒙「twtw」與「fillano」的解答。

延續這樣的問題,在諸多文字資料中,因為文字都是經OCR文字辨識的緣故,某些字特別無法辨識,我希望將「築刻」與「蒙刻」替代成「篆刻」。但不希望「雕刻」也被替代。如此EmEditor應該如何下達指令呢?

雕刻
築刻
蒙刻
篆刻學
小篆文字

另外--------------------

也需要把很多關於「尺讀」,「尺賣」等奇怪的辨識文字,改成「尺牘」

應該如何下達指令?

謝謝!

看更多先前的討論...收起先前的討論...
您這問題,看起來不是問題,
因您目前舉的例子,
一般取代,甚至XP內建的記事本的取代都可處理…
ebag iT邦新手 5 級 ‧ 2010-06-14 01:30:10 檢舉
可能上面我說的不夠詳細...

基本的固定「XX」代替「YY」我知道在記事本都能解決。

但我要作的是比較複雜的部分,例如上面說的,我想用「篆刻」取代「築刻」「蒙刻」...(很多不可預期的「X刻」的文字,但是,但是,必須設定條件,讓一些專有名詞(例如:雕刻,木刻..)不被這樣的指令所替換掉。

如果會這樣的指令,在諸多的文字檔中校正才顯得有效率與意義。
wordsmith iT邦高手 1 級 ‧ 2010-06-14 10:28:33 檢舉
在UltraEdit中,用

[^雕 | 木]刻

取代成

篆刻

應該就可以達到這個目的。

不過總覺得這樣轉好像有點風險啊汗
fillano iT邦超人 1 級 ‧ 2010-06-14 11:03:30 檢舉
這個需求,可以寫碩博士論文耶...(如果要能很「聰明」地處理語意)

除了「X刻」,你還必須考慮到「刻X」,然後蒐集詞組,寫成程式來處理。

程式的邏輯可能是這樣:
1. 搜尋「刻」
2. 找到時,用詞組來比對「X刻」及「刻X」,如果都不符合,再用「篆刻」來取代
(這樣就符合你的需求,但是有隱藏的問題:也許你要用來取代的不只是「篆刻」?也許還有「刻劃」?如何依照上下文語意來找到適合的詞來取代...這就是困難問題了。)

EmEditor Professional 支援使用JScript或VBScript的巨集,如果只是簡單的詞組檢查與取代,應該不困難。
fillano iT邦超人 1 級 ‧ 2010-06-14 11:05:37 檢舉
的確有風險,做完最好自己檢查一遍。

出版社也還是用人工校稿的,這不是沒原因...
fillano iT邦超人 1 級 ‧ 2010-06-14 11:08:28 檢舉
也是,其實用RE還是做得到,只是需要多考慮X刻跟刻X...有超過兩個字,或是「刻」在超過兩個字的詞中間而不是頭尾的狀況嗎?
ebag iT邦新手 5 級 ‧ 2010-06-14 11:31:55 檢舉
回應wordsmith兄~

你誤會我的意思,我並不是要取代正確的詞語(如木刻,雕刻等)。
而是要把原先是「篆刻」的詞,因為OCR辨識錯誤的關係,成為「蒙刻」「築刻」等詞....

而希望有個初步的篩選更替的程式來處理。

「木刻,雕刻...」等正確名詞是要保留的,並不是要被取代。
ebag iT邦新手 5 級 ‧ 2010-06-14 11:42:32 檢舉
因為我作的事書法相關的論著,的文字校定,所以詞句不會太「天馬行空」,大多是「專有名詞」。所以抓詞句應該不會太難。只是要經過一次的人工檢視,看看有哪些「X刻」,「刻X」(這個到不必理會)。

之後再使用正規表現來搜尋取代..。當然之後還需要檢查,但資料量龐大,人工檢視可能不大可能。如開頭所說的,作的是關於書法的專業論著,詞句有其固定的模式,若要列出全部可能的詞語。我另外也有製作另一個書法專有名詞的列表,大約在將近八千筆左右。如果要校正的內容詞語落在這八千筆外,可能也不重要了。
ebag iT邦新手 5 級 ‧ 2010-06-14 11:59:16 檢舉
我以為wordsmith看錯我意,

是我自己誤會程式意思。
SORRY~
除了「[^雕 | 木]刻」之外,可能還需要多一些詞句的配套...?
我覺得這種需要「列舉」的替換方式,
可能 regex 不大容易解決,
倒不如試試 EmEditor 裡的 「巨集」的功能來做這事。

參考:EmEditor Macro Reference 裡的內容。
流程上是這樣子進行:
1.錄製 「搜尋第一個列舉,並替代的動作」 的巨集。
2.編輯此巨集,擴充裡面 「搜尋第2,3,4...列舉,並替代的動作」 的指令。
3.執行巨集。

這樣可能也是除了用 regex 來解決外的可能途徑吧?!
沒試過,純推想,
若有成功,也分享一下您的經驗。

看到您的 『中国書道文化辞典』的索引製作和應用 進行過程真的是費心力有趣,對之後的使用者有更大的幫助,佩服!讚
shunyuan iT邦研究生 1 級 ‧ 2010-06-28 01:47:49 檢舉
fillano提到:
也是,其實用RE還是做得到,


PCRE 很簡單就可以搞定,或是 perl
ebag iT邦新手 5 級 ‧ 2011-05-26 02:37:11 檢舉
過了將近一年,「『中国書道文化辞典』的索引製作和應用」已經完成。

google日文輸入法匯入中國書道文化辭典索引
http://blog.yam.com/ebag/article/38509195
ebag提到:
google日文輸入法匯入中國書道文化辭典索引

good work.
fillano iT邦超人 1 級 ‧ 2011-05-26 08:22:17 檢舉
恭喜!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

4
sula3065408
iT邦研究生 1 級 ‧ 2010-06-14 13:42:07

用Perl寫的,為了要方便理解,沒用迴圈,單純拷貝貼上改一改而已。

<pre class="c" name="code">
#!/usr/bin/perl -w

$var="雕刻\n築刻\n蒙刻\n篆刻學\n小篆文字\n尺讀\n尺賣";

#篆刻->篆刻
print "[篆刻->篆刻]取代前:\n$var\n";
$var =~ s/築刻/篆刻/g;
print "[篆刻->篆刻]取代後:\n$var\n";

#蒙刻->篆刻
print "[蒙刻->篆刻]取代前:\n$var\n";
$var =~ s/蒙刻/篆刻/g;
print "[蒙刻->篆刻]取代後:\n$var\n";

#尺讀->尺牘
print "[尺讀->尺牘]取代前:\n$var\n";
$var =~ s/尺讀/尺牘/g;
print "[尺讀->尺牘]取代後:\n$var\n";

#尺賣->尺牘
print "[尺賣->尺牘]取代前:\n$var\n";
$var =~ s/尺賣/尺牘/g;
print "[尺賣->尺牘]取代後:\n$var\n";
0
shunyuan
iT邦研究生 1 級 ‧ 2010-10-25 22:08:10

利用有支援 regular expression 的 PCRE 或是 perl 來搜尋並取代特定的 token

我要發表回答

立即登入回答