Alan W Blackfirst commite7e48689 years agoHistory
152 lines · 5.7 KB · C
RawDownload
/*************************************************************************//*                                                                       *//*                  Language Technologies Institute                      *//*                     Carnegie Mellon University                        *//*                        Copyright (c) 1999                             *//*                        All Rights Reserved.                           *//*                                                                       *//*  Permission is hereby granted, free of charge, to use and distribute  *//*  this software and its documentation without restriction, including   *//*  without limitation the rights to use, copy, modify, merge, publish,  *//*  distribute, sublicense, and/or sell copies of this work, and to      *//*  permit persons to whom this work is furnished to do so, subject to   *//*  the following conditions:                                            *//*   1. The code must retain the above copyright notice, this list of    *//*      conditions and the following disclaimer.                         *//*   2. Any modifications must be clearly marked as such.                *//*   3. Original authors' names are not deleted.                         *//*   4. The authors' names are not used to endorse or promote products   *//*      derived from this software without specific prior written        *//*      permission.                                                      *//*                                                                       *//*  CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK         *//*  DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING      *//*  ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT   *//*  SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE      *//*  FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES    *//*  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN   *//*  AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,          *//*  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF       *//*  THIS SOFTWARE.                                                       *//*                                                                       *//*************************************************************************//*             Author:  Alan W Black (awb@cs.cmu.edu)                    *//*               Date:  April 2000                                       *//*************************************************************************//*                                                                       *//*  Read some data, build an utt, look up words and extract some feats   *//*  Actually doing osmething here                                        *//*                                                                       *//*                                                                       *//*************************************************************************/#include <stdio.h>#include "cst_hrg.h"#include "cst_tokenstream.h"#include "cst_lexicon.h" extern cst_lexicon cmu_lex;void cmu_lex_init(); static int bbb_relation_load(cst_relation *r,const char *filename);static int WordSylSeg(cst_utterance *u); int main(int argc, char **argv){    cst_utterance *u;    cst_relation *r;    cst_item *item=0;    int i;     cmu_lex_init();     u = new_utterance();    r = utt_relation_create(u,"Word");     bbb_relation_load(r,"ttt.txt");     WordSylSeg(u);     for (i=0,item=item_next(relation_head(utt_relation(u,"Segment"))); 	 item; item=item_next(item),i++)    {	printf("Segment %s %s %s %s\n",	       ffeature_string(item,"name"),	       ffeature_string(item,"n.name"),	       ffeature_string(item,"p.name"),	       ffeature_string(item,"R:SylStructure.parent.name")/*	       ffeature_string(item,"R:SylStructure.parent.R:Word.n.name"), *//*	       item_feat_float(item,"duration")); */	       );    }     delete_utterance(u);     return 0;} static int WordSylSeg(cst_utterance *u){    cst_item *word;    cst_relation *sylstructure,*seg;    cst_val *phones;    const cst_val *p;    cst_item *ssword,*segitem;        sylstructure = utt_relation_create(u,"SylStructure");    seg = utt_relation_create(u,"Segment");        for (word=relation_head(utt_relation(u,"Word")); 	 word; word=item_next(word))    {	printf("word: %s\n",item_feat_string(word,"name"));	ssword = relation_append(sylstructure,word);	phones = lex_lookup((cst_lexicon *)&cmu_lex,item_feat_string(word,"name"),NULL,NULL);	for (p=phones; p; p=val_cdr(p))	{	    segitem = relation_append(seg,NULL);	    item_set(segitem,"name",val_car(p));	    printf("seg: %s\n",item_feat_string(segitem,"name"));	    item_add_daughter(ssword,segitem);	}	delete_val_list(phones);    }     return TRUE; } static int bbb_relation_load(cst_relation *r,const char *filename){    const char *token;    cst_item *item;    cst_tokenstream *fd;     fd = ts_open(filename,                 cst_ts_default_whitespacesymbols,                 cst_ts_default_singlecharsymbols,                 cst_ts_default_prepunctuationsymbols,                 cst_ts_default_postpunctuationsymbols);    if (fd == 0)	return 0;     while (!ts_eof(fd))    {	token = ts_get(fd);	if (cst_streq(token,""))	    continue;	item = relation_append(r,NULL);	item_set_string(item,"name",token);	item_set_string(item,"whitespace",fd->whitespace);	item_set_string(item,"prepunctuation",fd->prepunctuation);	item_set_string(item,"punc",fd->postpunctuation);	item_set_int(item,"file_pos",fd->file_pos);	item_set_int(item,"line_number",fd->line_number);    }        ts_close(fd);     return 1;}   

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t