Speaker 20:10
K. Does anyone want to see Steve's feedback from the specification?
Speaker 10:16
Is there much more in it than you...... Boss one. Is there much more in it than he said yesterday?
Speaker 20:21
Not really. Just what he's talking about, duplication of effort and...
Like duplication of effort and stuff and
yeah, saying that we should maybe think about having a prototype for week six, which is next
Speaker 30:39
Next week. Yeah.
Speaker 20:42
So this should probably prioritize our
Speaker 10:47
Yeah. I'd say if for the prototype, if it just like wherever possible, chunk in the stuff that we have pre annotated and stuff and for the stuff that we don't have pre annotated, right, like a stupid baseline, then we should probably be able to basically... That means we focus on the interface first sort of so that we take the ready made parts and just see how we get them work together in the interface the way we want it and then we have a working prototype and then we can go back and replace pieces either by our own components or by more sophisticated common... Components of our own. So it's probably feasible. Thing is I'm away this weekend. So that's...
Speaker 41:24
If just want to have some data for the user phase, it could even be random data.
Speaker 11:33
Oh, yeah. Yeah. No. But also, I like the the similarity thing, my... Just my matrix itself for my stuff. I I I think I can do that fairly quickly because I have the algorithms. Yeah. Yeah. I think today's meeting is really the one where we where we sort of settle down the data structure and as soon as we have that, probably, like, after today's meeting, we then actually need to... Well, go back first of all and look at Knight XML to see how far that which we want is compatible with that what Knight XML offers us, and then just sort of everyone... Make sure everyone understands the interface.
So I think if today we decide on what data we wanna have now and later maybe even today we go and look at night XML or some of us look at night XML in a bit more detail just trying to make some sense of that code and see how does the representation work in their system. And then sort of with that knowledge, we should be able to then say, okay, that type of night XML data, we wanna load into it and this is how everyone can access it and then we should be able to go from it....
Speaker 22:37
Actually looked at the Java code for the... No.
Speaker 12:41
I've looked at the documentation and like seen enough to make me think that we want to use the NitexML framework because they have a good event model that synchronizes sort of the data and every display element, so that takes a lot of work away from us. Sort of that would be a reason for staying within their framework and using their general classes, but beyond that, I haven't looked at it at all, which is something we should really do. Who actually, for this whole discussion, I mean, who of us is doing stuff that is happening online and who of us is doing stuff that's happening offline? Like, my data is coming...
Speaker 53:30
The basic word importance is offline as well. The combined measure might not be if we want to wait what the user has typed into the search.
Speaker 33:41
Okay. Mine's gonna be mostly using the offline, but the actual stuff it's doing will be online. They won't be very processor intensive or memory intensive.
Speaker 13:51
So basically, apart from the display module, the display itself, we don't have an extremely high degree of interaction between sort of our modules that create the stuff and the interface. So the interface is mainly, while it's running, just working on data that's just loaded from a file, guess.
Speaker 24:12
I don't know about the search functionality. That might be online. Depends how it's gonna work.
Speaker 14:17
Yeah. Yeah. No. Yeah. The search is... I guess the search is sort of a strange beast anyway because for the search, we're leaving the Knight XML framework.
But that's still sort of... That's good. That means that at least, like, we don't have the type of situation where somebody has to do, a billion calculations on data online because that would make it a lot more like... That would mean that our interface for the data would have to be a lot more careful about how it performs and everything and nobody is modifying that data at online time at all it seems. Nobody is making any changes to the actual data online. So that's actually making it a lot easier. That basically means our browser really is a viewer mostly which isn't doing much with the data except for sort of selecting a piece of it and displaying it.
Speaker 35:10
Are we still gonna go for dumping it into a database? Are we still gonna dump it into a database?
Speaker 15:16
Well, some parts relevant for the search, yes.
Speaker 35:18
I'd say so. Because if we are, I reckon we should all read our classes out of the database. It'll be so much easier. Well, if we're gonna dump the part into a database anyway, we might as well dump all the fields we want into the database, calculate everything from there. So we don't even have to worry that much about the underlying XML representation. We can just query it. Yeah.
Speaker 15:43
But nobody of us is doing much of searching from the data in the online stage. And for altogether, like the display itself, I think we are easier if it's sitting on the XML than if it's sitting on the SQL stuff because if it's sitting on the XML, we have the Knight XML framework with all its functionality for synchronizing through all the different levels whenever there's a change, whenever something's moving forward and stuff. And we can just more or less look at their code like how their player moves forward and how that moving forward is represented in different windows and stuff. So I think in the actual browser itself, I don't wanna sit on the SQL if we can sit on the XML because sitting on the XML we have all... We have so much help and
for, like, the the calculations that we're doing, apart from the search, it seems everyone needs some special representations anyway.
Speaker 36:33
Well, if we can do that, we should try and store everything in an XML format as well. You mean our results? Yeah.
Speaker 16:41
Yeah. In in the night XML XML format, so with the timestamps and stuff so that it's easy to to tie together things. Yeah.
What I'm like... What we have to think about is if we go with this multilevel idea, like this idea that sort of if you start with the whole meeting series as one entity, as one thing that you display, as one whole sort of, that then the individual chunks are the individual meetings, whereas... And then you can click on a meeting and then sort of the meeting is the whole thing and the chunks are the individual segments. That means sort of we have multiple levels of representation, which we probably if we if we do it this way, like, we we have to discuss that if we do it this way, then we should probably find some abstraction model so that the interface in the sense, like, deals with it as if it's the same so that the interface doesn't really have to worry whether
it's a meeting in the whole meeting series or a segment within a meeting, you know what I mean? Mhmm. Mhmm. And that's probably stuff that we have to sort of like process twice then, for example, that... Like, the summary of a meeting within the whole meeting corpus or meeting series. Is meeting series a good word for that? I don't really know what... How to call it. You know what I mean? Like, not not the whole corpus, but every meeting that has to do with one topic.
Speaker 27:59
Yeah. That makes sense.
Speaker 18:00
And so in in the meeting series, so that a summary for a meeting within the meeting series is sort of
compiled offline by a summary module and that is separate from a summary of a segment within a meeting? Because I don't think we can...
Speaker 38:14
Well, we don't even need to do that because we got our information density calculated offline. So what we do is treat the whole lot as one massive document. I mean, they'll... It's not gonna be so big that we can't load in a information density for every utterance. I mean, just summarize based on that.
Speaker 48:31
I thought we would just have, like, one big summary with only different importance levels displayed on it. And depending on what our Zoom level is, we just display a part of it.
Speaker 18:49
So are we doing that at all levels? Are we...
Speaker 48:51
I mean, we would have one very big thing offline. And from that, we would just select what we are displaying.
Speaker 18:58
And just have different, like, fine grainedness levels sort of.
Speaker 49:02
Yes. So for example, you would give a high value to those sequences you want to display in the meeting series summary. Okay.
Speaker 19:12
The only thing Cut off. Yeah. So the only thing that would happen, if I double click, let's say, the whole meeting series on a single meeting is that the Zoom level changes, like the start and the end position changes and the Zoom level changes.
Speaker 49:26
That was what I I thought.
Speaker 39:28
you can do it online.
Speaker 19:29
I thought we couldn't do that. I was under the impression that we couldn't do that because we couldn't load the data for all that.
But I don't know. I mean, that...
Speaker 39:38
I don't think there's really much point in doing like that when it's just gonna feed off in the end the information density measure, basically. And that's all calculated offline. So all you're really doing is sorting a list. This is the computationally hard part of it.
Speaker 19:56
So I'm not sure if I got it.
Speaker 39:58
Well, like, the idea is we're calculating our information density all offline first for every utterance Mhmm. In the whole corpus. Right? So all you do is you say... If you're looking at a series of meetings, you just say, well, our whole document comprises of all these Mhmm. Stuck together. And then all you have to do is sort them Mhmm. By information density, like, maybe weighted with the search terms. So... And extract them. I don't think it's too slow to do online, to be honest.
Speaker 110:28
I I was just worried about the total memory complexity of it, I I could be a little bit. I mean, I just sort of, like, took that from something that Jonathan once said about not loading everything, but maybe I was just wrong about it.
Speaker 410:39
How many are... But I think the difference might be that we wouldn't just want to have the words and that's not so much what he meant was not possibly loading everything was Yeah. That you load all the annotation stuff, all the sound files, all... So
Speaker 110:57
what we have is we would have a word. Like, we would have words with some priority levels, and that would basically be it already because even the selection... Would would the summaries automatically feed from just how prioritized an individual word or how prioritized an individual utterances or are the summaries sort of refined from that and made by a machine to make sense and stuff or are they just sort of taking out the words with the highest priority and then the words with the second highest
Speaker 311:25
On the utterance level, I was thinking. So the utterances with the highest, like, mean information.
Speaker 111:32
Are we doing it on... The whole thing on the utterance level, are we doing it on word level, like, the information that's... Well, trouble we're doing
Speaker 311:36
on the word level is if you want the audio to sync up, you've got no way of getting in and extracting just that word. I mean, it's impossible. I think we have start and end times for words actually. But every single word.
Speaker 111:47
Yeah. Might sound crazy in the player. We should really... Maybe we can do that together at some point today that we check out how the player works.
Speaker 311:54
I don't think
Speaker 111:54
But there's maybe some merit in altogether doing it at an utterance level at the end.
Speaker 411:58
I'm getting quite lost at the moment because what's our difference between
the importance measure and the skimming? I mean, do we do both or is it the same thing?
Speaker 312:14
Well, the skimming is gonna use the importance. Yeah. Okay. But like, at
Speaker 412:19
first, just the only...... Talk about summaries, you talk about this, about skimming and not the...
Speaker 312:25
Well, mostly skimming, yeah.
Speaker 112:26
Well, but also about the displays, mean, the displays in the text body, in the latest draft that we had sort of we came up with the idea that it isn't displaying utterance, fartranscript, it's also displaying
summarized version in, you know, like below the graph, the part?
Yeah, but isn't that the skimming? Isn't that the skimming?
Speaker 112:50
Oh, yeah. Just like there's audio skimming and there's displayed skimming.
Speaker 412:54
Yeah. But it uses the same data.
Speaker 112:57
Yeah. Yeah. Maybe there's some merit of going altogether for utterance level and not even bother to calculate. I mean, if you have to do it internally, then you can do it, but maybe, like, not even store the importance level for individual words and just sort of rank utterances as a whole. The nice thing about
Speaker 313:13
that is it will automatically be in sentences more or less. So it will make more sense.
Speaker 113:20
It might be better skimming and less memory required at the same time. I mean, if you you know how to do it for individual words, then you can just... In the worst case, if you can't find anything else, just sort of make the mean of the words over the utterance. You know what I mean?
Speaker 513:31
Not quite. So what did you want to do? You just wanted to assign...
Speaker 113:37
What's the smallest chunk at the moment you're thinking of of assigning an importance measure to? Is it a word or is it an utterance?
Speaker 513:42
I thought about
Speaker 113:44
words. So we're thinking of, like, maybe just storing it on an per utterance level
because it's it's less stuff to store probably for Dave in the in the audio playing and for in the display, it's probably better if you have whole utterances than... I don't know, like, what it like if you just take single words out of utterances. It probably doesn't make any sense at all, whereas if you just show important utterances but the utterance as a whole, it makes more sense. So it doesn't actually make a difference for your algorithm because it just means that if you work on a word level, then we just mean it over the utterance.
Speaker 414:16
Yeah. I think we also thought about combining that measure with the measures I get from
Speaker 114:25
They are on...
Speaker 414:25
So that would also be on assurance level.
Speaker 114:29
So that's good anyway Yeah. Because that makes it a lot easier than to put it on... They need to
Speaker 314:33
be calculated at word level though because otherwise there won't be enough occurrences or the terms to make any...
Speaker 114:39
Oh, No. I mean, like, how just me does it internally? I don't know. But it's probably... Yeah. You probably have to work on word levels for importance. But there should be ways of easily going from a word level to an utterance level. Yeah.
Speaker 314:50
I reckon you can just read it over a sentence.
Speaker 514:52
But how about those words which don't carry any meaning at all? The and and something like that?
Speaker 315:02
Think we should feel......
Speaker 515:02
Average average over over whole utterance of the words and there are quite unimportant words in there, but quite important words as well. I think we should just disregard the the...
Speaker 315:17
Maybe we should have like a cut off so it... A word only gets a value if it's above a certain threshold. So anything that has less than say, naught point five importance gets assigned to zero.
Speaker 115:31
Or we do a pre filtering of sort of the whole thing sort of like, but that like the problem with that is it's easy to do in the text level, but that would mean it would still play the air in your audio unless we sort of also store what pieces we cut out for the audio.
Yeah. I think before we can like answer that specific question, how we deal with that, it's probably good for us look at what the audio player is capable of doing.
Speaker 315:58
I think we'll have to buffer the audio. I don't think it'll be very hard. I think it'll be like an hour or two's work.
Speaker 116:04
So what do you mean by buffering? Like you think directly feeding another
Speaker 316:09
WAV file essentially. Yeah. Just cutting in.
Speaker 116:11
Yeah. Yeah. But not but not stored on the hard disk and then loaded in, but loaded indirectly from memory.
Speaker 316:16
From memory. Yeah. So just like... There's bound to be like a media WAV object or something like that and just build it
Speaker 116:23
on the...... Stream if it exists in Java. Would probably be some binary stream going in some type. I have no idea. Okay.
Speaker 316:29
They must have, like, classes for dealing with files and if it has classes for concatenating files, you can do it in memory.
Speaker 116:36
Okay. So I mean... So that means that there's probably even if you go on a per utterance level, there's still some merit on within utterances cutting out stuff which clearly isn't relevant at all and that maybe also for the audio we'd have to do. So let's say we play the whole phrase, but then in addition to that we have some information that says minus that part of something. That's okay.
Speaker 316:56
That we can do. But what I think I might try and build is basically a class that you just feed it a linked list of different waveforms. It'll just string them all together with like maybe, I don't know, tenth of a second silence in between each one or something.
Speaker 117:12
Yes. Maybe even, I mean that sort of depends on how advanced we get. Maybe if you realize that there's massive differences in gain or in something, you can probably just make some normalization, but that really depends on how much time we have and how much it's necessary. Yeah. If like, I don't know anything about audio and I have never seen the player. So if you find that the player accepts some input from memory and if it's easy to do, then I guess fairly doable. So what that means in the general structure, we're actually quite lucky. So we have... We load into memory for the whole series of meetings just the utterances and rankings for the utterances and some information probably that says, well, I guess that goes with the utterance who's speaking. Oh, yeah. Because then we can also do the display about who's speaking.
Speaker 317:56
We also really want to be able to search by who's speaking as well.
But I'm I'm still confused because I thought, like, that's just what Jonathan said that we can't do, like, a massive document of that size.
Speaker 318:12
Doesn't matter because all the calculations done offline.
Speaker 118:20
The other end, I mean, shouldn't be like... It should be like 50 megabyte in RAM or something. It shouldn't be massive. 50, a 100 megabyte is quite big in RAM.
Just thinking what's the sim... So we do get an error message with the project if we load everything into the project with all the data they load. So we know that doesn't work. So our hope is essentially that we load less into it. Yes. What's this lazy loading thing? Somebody explain lazy loading to It
Speaker 218:54
just means it loads on demand. It only loads when it needs a particular type of file, like when it's being accessed.
Speaker 119:02
Okay. So that... Is that only by type of file? Like if if if the same thing is in different files, would it then maybe, like, you know, if if utterances are split over three or 10 or a 100 different files, is then a chance maybe that it doesn't try to load them all into memory at the same time, but just...
Speaker 219:20
Yeah. I think that's the idea. It just loads So
Speaker 119:23
why does it fail then in the first place? Then it shouldn't ever fail because then it should never...
Speaker 219:27
But if you were doing a search over the whole corpus, you'd have to look at them all.
Speaker 119:30
Yeah. But it fails right when you load it, right, the Nattic SmartKit. So that's interesting.
Speaker 419:40
So there's a different baseline in what it loads. For example, it loads all the utterances and so on, but it doesn't load the discourse acts and, for example, not the,
else was there? Not the summaries on your notes, those on demand.
Speaker 120:04
Let's check that out. I'll I'll probably ask Jonathan about it. Alternatively, if we realize that we can't do the whole thing in one go, we can probably just process some sort of metadata, you know what I mean, like sort of for the whole series
chunks representing the individual meetings or some like something that represents the whole series in a structure very similar to the structure in which we represent individual meetings, but with data sort of always combined from the whole series. So instead of having a single utterance that we display, we'd probably be like that would be representing a whole topic, a segment in a meeting.
And so that using the same data...
Speaker 420:55
You mean that you basically split up the big thing into different summaries? Example... That you have a very top level summary and a separate file for each...
Speaker 121:12
I'm thinking of in the sense of, like, creating a virtual a virtual meeting out of the whole meeting series, sort of.
Speaker 321:18
That's easy. You just, like, create a new XML document.
Speaker 121:21
Yeah. Sort of like offline create a virtual meeting, which which basically treats the meeting series as if it was a meeting and treats the individual meetings within the series as if they were segments and treats the individual segments within meetings as if they were utterances, you know, so we just sort of shifted one level up and in that way we could probably use the same algorithm and just like make like one or two ifs that say, okay, if you are on a whole document, a whole series level and that was a double click, then don't just go into that segment but load a new file or something like it. In But general use the same algorithm. That would be an alternative if we can't actually load the whole thing and...
Because also like even if we... Maybe this whole... Like maybe I'm worrying too much about the whole series in one thing display because actually, I mean, probably users wouldn't view that one too often.
Speaker 322:16
I don't think it's really that much of a problem because if it's too big, what we can do is just... Well, all the offline stuff doesn't really matter. And all we can do is just process a bit at a time. Like, for summarization, say, we wanted a 100 utterances in the summary. Just look at the meeting. Take the top 100 utterances in each other meeting. If it scores higher than the ones already in the summary so far, just replace them and then you only have to process one meeting at a time. Yeah.
Speaker 122:45
But I'm still worried, like for some for the display, if you actually... If you wanna display, like for the whole series, the information density levels based on and the only granularity you have is individual utterance. That means you have to go through every single utterance in a series of seventy hours of So
Speaker 323:04
maybe we should build a store a mean measure for the segments and meetings as well. Yeah.
Speaker 123:11
And if you make that structurally very similar to like one level down like the way how we store individual utterances and stuff, then maybe we can more or less use the same code and just make a few ifs and stuff.
So but still, so in general, we're having utterances
and that's as much as we really need. And they also have a time a time information, of course. And speaker. Speaker And
Speaker 323:46
information. Yeah. Topic segmenting will need as well.
Speaker 123:50
Yes. So an information which topic they are in, yeah. And probably separate to that an information about the different topics like that. Yeah.
So the skimming can work on that because the skimming just sort of sorts the utterances and puts as many in as it
Speaker 324:08
Well, yeah. It'll preserve the order when it's displayed. Yeah.
Speaker 124:15
Yeah. It'll play them in some order in which they were set because otherwise it's gonna be more entertaining.
But that's enough data for the skimming. And the searching... So what the searching does is the searching leaves the whole framework, goes to the SQL database and gets... Like basically, then it gets just a time marker for whether it is like that utterance that we're concerned with. And then we have to find... I'm sure there's some way in NitexML to just say set position to that time mark and then it shifts the whole frame and it alerts every single element of the display and the display updates.
Speaker 224:51
Yeah. You don't want it to do the old tree display as well for multiple results.
Speaker 124:56
Yeah. Yeah. That we can... Yeah. But so so if if some... So... Yeah. So if in that tree display somebody clicks on something.
Speaker 225:03
You just need to find the timestamp?
Speaker 125:05
Yeah. And then you sort of feed the timestamp to the night x m l central manager and that central manager alerts everything that's there like alerts the skim, like the the audio display, alerts the text display, alerts the visual display and says we have a new time frame and then they all sort of do the update routines with respect to the current level of zoom, so how much they display and starting position at where the or maybe the mid position of it, I don't know, like if you start where the thing was found or if that thing was found, it's in the middle of the part that we display that I don't know what that we can decide about. But in general sort of,
it's the same thing if like whether you play and it moves forward or whether you jump to a position through search, it's essentially all the window handling, it's the same event. It's only that the event gets triggered by the search routine which sort
Speaker 325:53
of pushed it into night, XML and says, please go there now. So we should basically make our own XML document in memory that everyone's
module changes that rather than the underlying data. And then have that x m... Night XML document tied to the interface.
Speaker 126:17
Why do we have to do it in memory? That stuff...
Speaker 326:20
Well, you can make it in the file if you want. I mean, like, the information is coming from offline.
Speaker 126:28
So we probably... We don't even have to change the utterance document. Right? Because the whole way... Like, whole beauty of the NAT XML is that it ties together lots of different files so we can just create an additional XML file which for every utterance... Like, the utterances have IDs, I presume, some references. So we just we tie just a very short XML file which it's the only information it has. It has whatever a number for the weight, for the information density and we just tie that to the existing utterances and tie them to the existing speaker changes.
Speaker 527:00
But there's no ID for an utterance. I think it's just for individual words. So how do we do that then? No. It's for utterances as well.
No, you're right. Yeah. I think it's just for one
where... So we have segments
Speaker 227:21
for each utterance are split up. Yeah. I think so.
Speaker 127:26
Well, otherwise, we'd probably have to go over and like add some integer that we just increment from top to bottom sort of to every utterance as an ID or try to understand how Knight XML IDs work and maybe there's some special rules we have to follow when we use these IDs.
Speaker 227:43
Yeah. Pretty sure it's already there. Pretty sure that's already there. The utterances are numbered.
Speaker 127:50
Yeah. The the girls say the utterances themselves are not numbered at the moment.
Speaker 527:54
I'm not quite sure. I have only seen that the Okay. The individual words have got an ID. Yeah.
Speaker 128:00
So I guess that would be solvable if not...
Speaker 528:03
Yeah. You always could have a look at the timestamps and then take the ones that belong together to form an utterance.
Speaker 428:13
No. I I think we would just take the segments that are already...
Speaker 528:18
Yeah. If they are already there, it's... Yeah. There's some... There's a segments file.
Speaker 128:39
All these fancy pens. So what... So the stuff we have... We have utterances and speakers and weights for utterances. So for every utterance sort of like, the utterance has a speaker and a weight which is coming from outside or which is tied to it. And there is segments
Speaker 329:02
which... They are utterances, aren't they? The segments are utterances.
Speaker 229:05
That's the impression I get.
Speaker 129:07
Oh, so sorry. Yeah. That's... Topic topic segments, meant. Like, they are they are super units. So the utterances are tied to topic segments.
And if the timestamps are on a word level, then we somehow have to extract timestamps for utterances where they start...
Speaker 429:28
There are timestamps for the segments.
What segments now? Segments is, for example, when when you look at the data, what is displayed in one line?
Speaker 129:42
Okay. When when you... Is that the same as utterance? Is that that the same as utterances? Well, it's
Speaker 429:49
close enough,
Speaker 329:50
isn't it? It may not be exact every time. It's certain...
Speaker 429:53
I compared it with what I did for the POS duration extraction.
And basically, it's words that are added in a sequence without pauses. But sometimes, however, there are short pauses in it and they're indicated by square brackets pause. So that's
Speaker 130:15
but that's one segment or is that two segments then?
Speaker 430:21
Sometime... That... The annotators decided what was one segment and what wasn't.
Speaker 130:27
Okay. Okay. So generally, utterances is that which we just called... Sorry, segments is that which we just call utterances now. Guess of like one person's contribution at a time sort of thingy dingy. Okay. Okay. So, yeah, so we have those and and then we have some field somewhere else which has topics. Topics, yeah. Yeah. The topics basically they're just an ID probably with a start time or something and the utterances reference to those topics, guess.
Speaker 230:59
Yeah. Think that's right.
Speaker 130:59
So the topics don't contain any redundant thing of like showing the whole topic again, they just sort of say a number and where they start and where they finish The utterances then say which topic they belong to.
Speaker 431:10
Yeah. But I think for some annotations, an utterance can have several types. For example, for the dialogue acts and so on.
Speaker 131:24
Yeah. But I was thinking of the topic segmentation now and... For that, there would only be one. Right? Because it's sort of like... It's just a time window.
Speaker 331:32
It should be. Yeah.
So if this lazy loading works, then this should definitely fit into... I mean not memory then because it wouldn't all be memory at the same time. So if you just have some sort of that information like long list of all the utterancessegments and like shorter smaller lists which give weights to them and even though probably if there's a lot of overhead in having two different files, can probably merge the weights into it offline. You know what I mean? Like if there's a lot of bureaucracy involved with having two different trees and whether one ties to the other because the one has to wait for the
Speaker 332:09
other, then it's probably quicker to just... Well, why don't we just write it as a new XML file? Can I handle just loading arbitrary new like, attributes and stuff? I mean, I would have thought they'd make it able to.
Speaker 132:23
Yeah. I thought that was the whole beauty that, like, you can just make a new XML file and sort of tie that to the other end and it's...
Speaker 332:29
So why do we need to have two XML trees in memory at one?
Speaker 132:32
Oh, yes. So no, I didn't I didn't mean tree, no. No, I meant just like handling two different files internally sort of... I was just thinking like if if the overhead for having the same amount of data coming from two files instead of from one file is massive, then it would probably be for us easy to just like offline put the weight into the file that has the segments. Yeah, segments slash utterances already but that we can figure out. I mean if it's going horrendously wrong.
Speaker 333:00
The other thing is that would mean we'd be using their parser as well which means we wouldn't have to pass anything which would be quite nice. Yeah. Because their parser is probably much faster than anything we've come up with anyway.
Speaker 133:11
Yeah. We'd be completely using like the whole infrastructure and basically just... I mean the main difference really between our project and theirs really is that we load a different part of the data, but otherwise we're doing it the same way that they are doing it. So we just we are sort of running different types of queries on it. In a sense, I think we are running queries. It's not just about what we load and what we don't load, we are running queries in the sense that we dynamically select by weights, don't we? And we have to check how fast that is, like to say, give us all the ones that whether that works with their query language, whether that's too many results and whether we should.
If because if it let's say, I mean, if their query language is strange and if it would return 10,000,000 results and it can't handle it, then we can just write our individual components in the way that they know what the threshold is. So they still get all the data and just they internally say, oh no, this is less than three and I'm not going to display it or something.
Speaker 334:11
I mean, process it in chunks and it gets too big basically. We can just process it all in chunks. It's too big to load into memory.
Speaker 134:19
I'm just thinking for this whole thing of like a different level sort of cutting out different pieces whether we do that through a query where we say, give us everything that's above this and this weight or whether we keep the same infrastructure, but every individual module like the player and the display say like they still get sort of all the different utterances, all the different pieces, but they say, oh, this piece I leave out because it's below the current threshold level.
Speaker 334:43
I think we probably want to store a
hierarchical information density as well. So like an information density score for each meeting and each topic segment. Because otherwise, we'll be recalculating the same thing over and over and over again.
Speaker 235:01
Yeah. That'd be much more efficient to do that.
Speaker 335:05
And that will obviously make it much easier to display.
Speaker 135:08
When do we need the one for
Speaker 335:10
the meet? Well, maybe not for the whole meeting, but like...
Speaker 135:13
Yes, I guess for the... When we have to display where we display the whole series, then if we have for the individual topic segments within the meetings. If we have ready calculated measures, then we don't have to sort of extract that data from the individual Yes, and that's also fairly easy to store along with our segments, isn't it? For the segments, are we extracting some type of title for them that we craft with some fancy algorithm manually? Are we just taking the single most highly valued keyword utterance for the segment heading? Well, we can start off
Speaker 335:47
like that. Well, I was gonna start off... I've got some halfway through in printing one that does just IDF. And then just... I can change that to work on whatever.
Speaker 135:58
It's probably like... In the end, probably, it wouldn't be the best thing if it's just the high... Most highly ranked phrase or keyword because like for example for an introduction that would most definitely not be anything that has any title anywhere similar to introduction.
Speaker 336:11
And they should be wasted by stuff like the hotspots and the keywords and the search
Speaker 136:16
and stuff like that.
Also, like, this part, maybe if we go over it with named entity in the end. If, I mean, if one of the people doing DLL has some named entity code to spare and just like at least for the... For sort of for finding topics, titles for for segments, take a named entity which has a really high... What's it called? DFIDF, whatever. Cause you'd probably be quite likely if they're talking about a conference or a person that that would be a named entity which is very highly frequented in that part.
Speaker 336:47
Why not say something about named entities? I thought you said there wasn't very many.
Speaker 136:51
Yeah, he said they're quite sparse, so that basically was don't bother basing too much of your general calculation on it, but like especially if they're sparse, probably individual named entities which describe what a segment is about would probably be quite good. Like if there's some name of some conference, they could probably say that name of the conference quite often. Even though he's right that they make indirect references to it. Anyway, sorry.
Speaker 537:16
You said you're currently implementing the IDF? What exactly are you...
Speaker 337:21
It's not TFIDF. It's just inverse frequency because it's really easy to do, basically. Okay. But it's just like for a baseline, really. Mhmm.
Speaker 237:32
You're able to do that in Java, yeah?
Speaker 337:34
Well, I'm halfway through. It's not working yet, but it will be.
Speaker 137:39
So you're doing that on a on a per word level?
Speaker 337:42
Yeah. Okay. And then averaging over the utterances. Okay. But it's not like related to the corpus at all. It's just working on an arbitrary text file at the moment.
Speaker 137:54
Okay. Cool. I was just wondering where you had the corpus from at the moment.
So it seems that the data structure isn't a big problem and that basically we don't have to have all these massive discussions of how we exactly interact with the data structure because most of our work isn't done with the data structure in memory in the browser, but it's just done offline and everyone can represent it any way they want as long as they sort of store it in a useful XML representation in the end. So...
Speaker 338:25
It would be useful to know how everyone's gonna store their things though. Yeah.
Speaker 138:32
That would mean understanding the night XML XML sort of format in a lot more detail. We should... I think we should just have a long session in the computer room together and like, now that we know a bit more what we want, take a closer look. And that's
Speaker 338:46
a few hours free. Had to
Speaker 238:49
the look the topic segments, how it's stored. And then, yeah, there's a few per meeting and well, it gives a timestamp and inside each one, there's the actual utterance segments. Mhmm. The rest of them are card, and they're all numbered.
So that's where that's stored.
Speaker 139:15
Good. Yeah. I haven't looked at this stuff much at all. Yes.
Speaker 239:18
So I guess if I'm gonna be segmenting it with a LC seg, then that seg same format I'd want to put it back in. So it'd be equivalent.
Speaker 139:31
Who's who's sort of doing the the central coordination of of of the browser application or like... Well, like the integration. What do mean integration? Yeah. But also like all these elements like like the loading and... Yeah. Integration and and like handling the data loading and stuff.
Speaker 239:51
Don't know what to think. Anyone's been allocated to do that yet.
Speaker 139:54
I'm sort of like, I think I'll take over the display just because I've started with a bit and found it Yeah. Found it doable. Yeah. Definitely.
So somebody should sort of be the one person who's... Who understands most about what's centrally going on with the project, like with the browser as a whole and where the data comes in and...
Speaker 440:25
Any volunteers?
Speaker 340:28
It's always boring task.
Speaker 140:30
It's also complicated. Yeah. Could be difficult. Yeah.
I know what we... I guess we can do it, like, several people together. It's probably just those people have to work together a lot and very closely and just make sure that they always understand what the other one is doing.
Speaker 240:47
Yeah. Well, I guess the important thing is to get the crucial modules built.
Speaker 340:54
least simple versions of them.
Speaker 140:57
Yeah. Or already made versions of them for that matter.
Speaker 241:00
Yeah. And then we'll maybe have to prioritize somebody into integrating it.
Speaker 141:08
Yeah. But I think actually, like, at the moment, the integration comes first. Mean, it's sort of at the moment the building the browser comes first and then only comes the creating new sophisticated data chunks because that's sort of the whole thing about having a prototype system which is more or less working on chunk data, but at least we have the framework in which we can then test everything and look at everything because before we have that, it's going be very difficult for anyone to really see how much the work that they're doing is making sense because you just... Well, I guess you can see something from the data that you have in your individual XML files files that you create, but it would be nice to have some basic system which just displays some stuff.
Speaker 341:44
So maybe we should try doing something really simple like just displaying a whole meeting and, like, just being able to scroll through it or something like that.
Speaker 141:54
Or just adapt like that. Like, just sort of go from their system and and adapt it piece for piece and see how we could how we could arrange, like, adapt it to our system.
Does anyone want to, like, just sit with me and, like, play for three hours with my text mail at some point?
Speaker 342:17
Are you free after this?
Speaker 142:21
I wouldn't like to be because I'd like to go to the gym. I'm theoretically free, but if there's any time...
Speaker 342:26
Friday then? Because I'm off all Friday.
Speaker 142:30
You have nothing... No free free time on Wednesday?
Speaker 342:33
Wednesday, I've got a nine till twelve.
Speaker 142:39
Nine till twelve and then nothing... You have Nothing for
Speaker 342:41
in the afternoon. I've got nothing in the afternoons.
Speaker 142:45
Anytime Wednesday afternoon, that'd be great. Okay.
Speaker 342:47
So... Yeah. Yeah.
Speaker 142:51
Tower? Yeah. Or Forest Hill, whatever one's easy to discuss stuff.
Speaker 342:56
Don't know. I'll be in... I'm not by... The afternoon anyway.
Speaker 143:00
Okay. What time do you wanna do?
Speaker 343:03
Well, I'll be there from twelve. I've got some other stuff that needs done on MATLAB. So if you're not there at twelve, I can just work on that.
Speaker 143:10
Okay. So I'll just meet you in in eighteen in the afternoon.
I guess at the moment nobody critically depends on like the NitexML stuff working right now. Right? Like at the moment, you can all do your stuff and I can do my LSA stuff. And I can even do the display to a vast degree without technically having the supplying framework working. So it's not that crucial.
Speaker 543:48
I I would need the raw text pretty soon because I have to find out how I have to put the segments into bins.
Speaker 143:59
Yeah. I need the raw text as well. Yeah. I was I was more thinking of the sort of the the whole browser framework as a running program now. Yeah. Think we all need the raw text in different in different flavors,
Speaker 244:09
don't we? Yeah. Yasmin, I thought you said that you did look at extracting the text.
Speaker 544:15
Yes. I did. But I've only just got the notes. I have to still have to order everything by the time. Yeah.
Speaker 244:25
said you did it in Python. Yeah?
Speaker 544:27
Yeah. I think it's quite easy.
Speaker 244:28
Yeah. Did you use the the x l... X m l parser in Python? Yeah. Right. Mhmm. So
because, yeah, I was having a look in it. I'll look at it as well. And I noticed the speakers are all in a separate file. So did you have to combine them all and and then reorder them?
Speaker 544:46
Yep. That's what I was... I thought. Just combine them and then order the timestamps accordingly.
Speaker 244:54
Yes. So that's approach and and... Well, I was going to do so. We may as well collaborate.
Speaker 545:00
Okay. What I found out was that there are quite a lot of things without without timestamps in the beginning.
Speaker 245:08
In the word files?
Speaker 445:10
Yeah. Yes. Excel files. Yeah.
Speaker 545:12
That's just an ID or something. Don't know.
Speaker 445:14
Yeah. Everything that's word has a timestamp.
Speaker 545:18
Yes. But what are the other things that's some kind of number? Maybe the file number or something that is in the beginning. What is that?
Speaker 245:29
Not sure what you mean.
Speaker 545:31
I think there are quite a lot of numbers in the beginning when there's no timestamp for the numbers. It's... I think they say quite a lot of numbers, and before that, there's this number.
Speaker 145:45
Number within the XML context.
Speaker 545:47
Yeah. There are numbers in the in the w tag, but there are no time stamps.
Speaker 145:53
Are they spoken number? Like, do they look like they're utterances Yeah. Numbers? There's the number task, isn't there? That's part of the whole thing.
Speaker 446:00
That's at the end, I
Speaker 146:02
think. Okay.
Speaker 546:03
Yeah. In the beginning as well sometimes, I think.
Speaker 446:06
At least I saw so maybe.
Speaker 146:09
Maybe we have to probably cut that out anyway for our project. I don't know. It's probably gonna screw up a lot of our data otherwise. Yeah.
Not sure if it... What it does to...
Speaker 446:19
I think it wouldn't as it occurs. I mean, it would be because in every meeting.
Speaker 146:26
Would probably make the... Yeah. If if you have segments for that, probably be...
Speaker 446:29
I think it even has its own annotation like digits or something. So that should be very easy to...
Speaker 146:36
I'm just thinking like it... It would probably like the LSA would perform quite well on it. It would probably find another number test quite easily. Yeah. A constraint vocabulary with a high co occurrence of the same nine words. That would...
Speaker 546:48
But what is it actually that numbers...
Speaker 446:50
It's just to test the system, I think.
Speaker 546:53
Yeah. Okay. So... But there are no timestamps.
Speaker 146:56
I think it's also something that they they set the numbers in order. Right?
Speaker 447:01
They have to read numbers.
Speaker 147:03
Yeah. I think it's... It it sounded like they wanted to check out how well they were doing with overlapping and stuff. Because basically, it's like they're reading them at different speeds but you know in which order they are set.
Speaker 447:14
I know I didn't have a look at that so...
Speaker 147:16
Ixie had some reasons for doing it.
She must have been pissed off saying like numbers at the end of every meeting.
Speaker 547:24
And also there are different
combinations of letters, b r e and something like that. Is everything ordered, Are the timestamps global or are they local at any point?
Speaker 247:39
I thought they were local to a particular meeting.
Speaker 147:42
Okay. Dave, if you and... Or actually for just minutes, well, if you're doing IDFs or whatever you call your your frequencies, I always mix up the name, you need some dictionary for that at some point. So like you need to have some representation of a word as not not that specific occurrence of that word token, but of of a given word form because you make accounts for word form. Right?... A dictionary. Yes. So we should work together on that because I need a dictionary as well.
Speaker 348:10
Oh, I was just gonna use the HashMap one in Java because I'm only gonna do it on small documents. It's just like until the information density is up and running. Just trying to get... Give me something to work with. Okay. Didn't you say that there was... That's only gonna use quite small documents, you see, to start with.
Speaker 148:29
Yep. For... I'm just wondering for the whole thing. Who was it of you two who said that there's some program which spits out a dictionary probably with frequencies?
Speaker 548:38
It's rainbow. I think it's just a dictionary in the first place.
Speaker 148:44
Okay. Is anyone of you... For the for the document frequency over total frequency, you gonna have total frequencies of words then with that. Right? Like over the whole corpus sort of...
Speaker 548:56
No. I have to bin it up. And so I will only have counts for each each pin or something.
Speaker 349:04
Why does it need to be classified into, like, different segments?
Speaker 549:07
It's because Rainbow is a text classification system. And I think it's not possible to have just one class. That's the problem.
Speaker 349:17
Can we just fill a second class with junk that we don't care about?
Speaker 549:21
Maybe we could.
Speaker 349:23
Like, I don't know, copies of Shakespeare or something.
Speaker 449:25
Yeah. Sure. You're sure we
Speaker 549:26
could do that, but I don't know if that makes sense.
Speaker 349:29
Because if all we're looking for is the frequency statistics, I don't see how that would be changed by the classification. If
Speaker 549:39
we need just frequencies, maybe we should just calculate them by
Speaker 149:44
I wonder that.
Speaker 549:45
Using Perl or something. I don't know.
Speaker 349:48
Well, there may be another tool available.
Speaker 549:51
Yeah. It's quite easy to just count and sort them by frequency.
Speaker 149:57
Using which tool are you talking about? Just using a Perl script. Be careful with that. Like, my experience with the British National Corpus was that there's far more word types than you ever think because anything that's sort of unusual generally is a new word type, like any typo or any strange thing where they put two words together and also any number is a word type of its own, so you can easily end up with 100 thousands of words when you didn't expect them. So generally, dictionaries can grow bigger than you think they do.
Speaker 550:25
I don't know how many terms you can handle in Perl.
Speaker 150:30
Or you can probably also pre filter like with regular expressions even just say if it consists of only digits, then skip it or even if it consists any special characters, then skip it because it's probably something with a dot in between which is usually not something you wanna have.
Speaker 350:47
Can't remember who's got it. It might be WordNet, but one of these big corpses has a list of stop words that you can download. And they're just basically... There's some really uninteresting, boring words that we could filter out before we do that.
It's like that's one of the papers I read. That's one the things I did right at the beginning is they've got this big stop list and they just ignore all of those.
Speaker 151:14
What I did for my project, I just ignored the 100 most frequent words because they actually end up all being articles and and everything and stuff.
So we need... Like, several of us need a dictionary. Am I the only one who needs it
Speaker 351:31
with frequencies? It'd be useful for me as well. Am I
Speaker 151:34
the only one who needs it with frequencies or...
Speaker 351:37
I think that'd be useful for me as well. Frequencies? Yeah.
Speaker 151:41
Well, I guess as soon as we have the raw text, we can probably just start with a Java HashMap and just HashMap over it and see how far we get. I mean, you can probably, on a machine with a few 100 megabyte RAM, you can go quite far. You can run it on beefy, so even if it goes wrong and even if it has a million...
Speaker 351:55
What we want look into getting some subset of the XE Corpus off the dice machines because I hate working on dice. It's awful.
Like, so I can use my home machine.
Speaker 152:08
Oh, yeah. Burning it on a... Like, we should be able to burn the whole Corpus just...... Burner though.
Speaker 352:12
Where has a CD?
Speaker 152:13
Ah, see, asked support about that two days ago. In the Informatics Building, sorry, in Appleton Tower 5, the ones closest... Two machines closest to the support office, so I presume, I would... I have the exact email. I think he's talking about sort of the ones that...
Speaker 352:30
Right hand corner file.
Speaker 152:32
Yeah. If if you enter the big room in the right hand corner, I think. The thing is, like, you can only burn from the local file system. So if it's from... Well, actually, think if it's mounted, you can directly burn from there. But the problem is I have my data on beefy end, so I have to get it into the local temp directory and burn it from there. But you
Speaker 352:49
can burn from there. How big is it without?
The... Looked at that map. We looked at
Speaker 152:56
at that map. Forgot.
Speaker 352:58
Because I could just say it. Going over SCP one night and just leave it going all night if I had to.
Speaker 153:05
Yeah. Yeah. We should be able to get it. I don't think it was I don't think it was a gigabyte.
Speaker 353:12
Because, yeah, I mean, the wave data are obviously not gonna get off there.
Speaker 153:17
See, I would I would offer you to to get it on this one and then like copy it. But you know what I figured out? I'm quicker downloading over broadband. Much better than using this hard disk. There's something strange about the way how they access the hard disk, how they mount it, which is unfortunate.
Speaker 353:34
I'll see if I can SCP it, I suppose.
Speaker 153:38
What operating system do you have?
Speaker 353:40
I've got a Linux box and a Windows box.
Speaker 153:43
What what connection do you have at home? Broadband. Yeah. So if any one of us gets it, can then just use...
Speaker 353:49
Linux CD. I can... Yeah.
Speaker 153:52
Burn it to CD or... Yeah. Put it on on hard disk, whatever. Yeah. Question is if you're not quicker, if you... Because you should get massive compression out of that, like 50% or something with a good algorithm. So if you compress it and just put it into a temp directory...
Speaker 354:07
I'm sure if there's enough space because The how much do we
Speaker 154:11
temps usually have for gigabyte free or two. Really? The temps, yeah. Like, I mean, there's no guarantee that anything stays there, but overnight it'll stay. And I think the temps usually have...
But that would have to be the temp directory of the machine you can SSH into directly of SSH. Yeah. Well, I
Speaker 354:32
can do it from that session, can't I? I can compress it from a remote session and SCP it from the same session.
Speaker 154:42
Yeah. They they they probably hate you for doing it, but
they probably... They'd like you more if you SSH into another computer, compress it there and then sort of copy it into the gateway machine? Do you think? They have... If you SSH, you know, if you SSH in there, there's big warning about doing nothing at all in the gateway machine.
Speaker 355:07
I don't know. I was thinking of SSH ing just into some machine And then just SCP ing it from there.
Speaker 155:15
To your home machine?
Speaker 355:17
Yeah. I mean, it has to go
Speaker 155:18
through the gateway. I haven't figured out how to tunnel through the gateway into another machine It's not it's not easy, definitely. That's why I end up sort of copying stuff into the temp directory at the gateway machine. Sorry if this is boring everybody else. This is just details on how to get stuff home from... We can probably just look at that together when we're meeting.
Speaker 455:38
Okay. I just wondered... So who's then doing
the frequencies on the words? Because I'm... I think I will also... I could also make use of it for the agreement and disagreement thing because I... In my outline, I talked about
using the discourse acts first. Mhmm. And then in the chunks of text, found looking for word patterns and so on. So I would, for example, need the most frequent words. Well... So if you cut off all that, it wouldn't be...
Speaker 156:28
As soon as somebody gives me the raw text of the whole thing, I can probably just implement like a five line Java hash table frequency dictionary builder and see...
Speaker 456:39
Yeah. But I need it for my chunks then I would... You know?
Speaker 156:43
Did you not say frequency of words in the whole... Sorry.
Speaker 456:46
Yeah. But I I would like to look at the frequency of words in my... In the regions of text I found out to be interesting. So I wouldn't need it. It would have to be recalculated on...
Speaker 157:02
Yeah. You have to
Speaker 357:03
contact yourself. Yeah. First, how big are the chunks? How big are the chunks you're looking at?
Speaker 457:11
I think it would be, you know, as big as as the hotspot annotation.
Speaker 357:22
So quite small then.
Speaker 457:23
That's quite small. Yeah. That's some utterances.
Speaker 357:26
You could use just the same thing we used to build the big dictionary. Just do that online because that won't take long to build a little dictionary that big, will it? I mean, just use the same tool
Speaker 457:39
Yes. Yeah. I would probably just concatenate all my Yeah. Text chunks and then let's say I will run over it.
Speaker 157:49
Oh, you don't wanna have different counts for each chunk, just like sort of for something from all chunks. Yes. Oh yeah, no, that's... Yeah, so once I write an... If I write like an algorithm which does a hash table dictionary with frequency from a raw text, then the raw text can be anything. So how far are we... How far are you getting raw text out of it, do think?
Speaker 558:13
I can get all the raw text, but it has to be ordered still.
Speaker 158:18
Okay. Well, that's good because for the dictionary, the order doesn't make a difference of it. So... Yes. So I'll get that from you, and I'll write a hash table which goes over that and creates a dictionary file. So for the dictionary, is it okay if I do whatever word blank frequency or something? Just... Could everybody sort of start from that? I mean, I guess
Speaker 358:37
we can. Well, that's it. Are you using TFIDF for the information density?
Speaker 558:44
It's in... What is implemented in Rainbow is information gain, and I'm not quite sure how they calculate that.
Speaker 358:52
Alright. Because frequency would be useful, I think. Yeah.
Speaker 158:57
I I need frequency as well.
Speaker 358:59
Depending on the context, the size, and what we consider a document in the sense of calculating TF IDF is gonna change,
which might need thinking about.
Speaker 159:12
Well, I think we might have a lot in common what we calculate because I, for my latent semantic analysis, need, like, counts of words within a document, within segment actually, within a topic segment.
Speaker 559:23
That's what Rainbow does. I think you can just get probabilities for certain words for each document.
Speaker 159:32
Can I convert these probabilities back into frequencies?
Speaker 559:37
We would have to look at that. Okay.
Speaker 159:42
So that's what Rainbow does because that's what LSA builds on. Like, it builds a document by frequency matrix. So I can probably get that even though... But I already have I already have my code to build it up myself. I don't know I have my code already.
Yesterday, if you said you need the frequency counts actually
Speaker 359:59
I think that'd be useful. Yeah.
Speaker 11:00:00
Per document, but you say not for the whole thing.
Speaker 31:00:02
Well, you need the raw frequency as well, but you also need how many times things occur within each document. And what we consider a document is gonna depend on our context, I think. So if we're looking at a whole lot of meetings, we'll consider each meeting a document in sort of terms of this algorithm. And if we're viewing, like, say, just small topic segment, you might look at even each utterance as a small document.
Speaker 11:00:39
It more and more appears to me that if we if we scrap the notion of the meeting as an individual thing and sort of see meetings as as topic segments and have sort of like hierarchical topic segmentation instead, then it's like a more coherent framework.
Speaker 31:01:02
So I need some thought of how...
Actually, maybe it doesn't actually matter. Maybe if you just do it once at the highest level, it it will be fine. But I was just thinking it might be difficult to calculate the TFIDF offline for all the different levels we might want. So if we're gonna allow disjoint segments, for example, then how are we gonna know what's gonna be in context at any given time? But I suppose if you just did it globally treating a meeting as a document, it'd probably still be... Work out fine because you'd only be comparing Wait. The ones within the content.
Speaker 11:01:40
Are we using this for the
the the doc... For the waiting in the end now, this this measure you're calculating? I don't know.
Speaker 31:01:50
I thought we're gonna use that in the end
for the information density.
Speaker 11:02:00
Because if we're doing... I I think for for the information density, we we should calculate it on the lowest level, not on the highest...
Speaker 31:02:09
Sorry. That's what I mean. Like, yeah, for each word or whatever, but across the whole lot is what I mean by highest level across the whole corpus.
Speaker 11:02:19
Yeah. But don't you have to like go sort of like for in a document versus the whole thing? Isn't that how it works that you look
Speaker 31:02:26
look at... Yeah. We probably look at each meeting as a document.
Speaker 11:02:29
I don't think that's a good idea because isn't it like that we expect it to change over with the different topic segments more? That they're talking about something different in each different topic segment?
Because that's what relative term frequency is about that like in some context they're talking more about a certain word than in general. So that would more be the topic segments then.
Speaker 51:03:03
that's what I thought as well that you... That probably the topic segment level is the most informative in Yeah. The
Speaker 31:03:14
Are they big enough to get anything meaningful That's
Speaker 51:03:17
the problem. I don't know.
Speaker 11:03:23
I'm just wondering if there's ways to abandon the whole concept of of meetings and sort of... Which is not really treating separate meetings as too much of a separate entity.
Speaker 31:03:34
Yeah. That is not... It's not an issue. You just concatenate an XML file together. But we still want to have like a notion of meetings for the user.
Speaker 41:03:43
Yes. Definitely.
Speaker 11:03:46
But on algorithmic level, whether we actually... Whether there's some way to just represent meetings as as topics. Yeah.
Speaker 31:03:52
You just, like, whatever you want to look at, you just jam together into an XML file and that's your meeting even though bits of it may have come from all over the place or whatever. I mean, I don't see why that's really a big problem. That's not
Speaker 11:04:08
really what I meant, but I think I have to think more about what I meant.
I'm confused about everything.
Speaker 31:04:16
So basically, what you're saying is you can take an arbitrary amount of data and process it with the same algorithm. It doesn't matter conceptually what that data is. It could be a meeting. It could be two utterances. It could be a meeting plus half meeting from somewhere else.
Speaker 11:04:32
I'm I'm not so concerned about the meeting plus something else. I'm more talking about like, yeah, keeping keeping the same algorithm and the same way of handling it and just saying like just this topic here happens to be like a whole meeting and it has sort of subtopics such as that sort of topic is a hierarchical concept.
Like a topic where there can be super topics and topics and the super topics are in the end what the meetings are, but in general, at some level super topics are treated like topics.
Speaker 31:05:04
I think it's very difficult though. I mean, what you do is you just build an XML file and if you wanted to get down to the utterances, you go to the leaves. And then if you wanted the next level up, you go to the parents of those and, like, just go from, like, the leaves and was towards the branch to build up things like, you know, when you click on a segment, it's gonna have, like, words or whatever that are important.
Speaker 11:05:37
I'm not really sure what I'm wondering.
Speaker 31:05:40
As long as, like, the algorithms are designed with it in mind, I don't think it's a very big problem.
Speaker 11:05:47
So sorry. Describe that again.
Speaker 31:05:49
Well, like, say you had... Like, say for a meeting, right, you've got, like, say a hierarchy that looks quite big like this,
and, like, the utterances come off of here maybe. Mhmm. Then when whatever your algorithm is doing Mhmm. As long as when you're working with utterances, you go for all the leaves. Like, then if you need something next up, so like a topic segment, you'd go to here. But if you're looking at, say, this one, so it only went like this.
Right? So you... It's the same. You'd start with the leads and you go, oh, I want a topic segment. So I go one layer up. Mhmm. See? And then if you're working with just the topic segment in there, it's the only thing you have to worry about. And, like, each time you want a higher level, you just need to go up the tree. As long as your algorithm respects that, then we can just
process any arbitrary XML file with whatever hierarchical structure we want.
Speaker 11:06:56
So that would be the series as a whole. That would be sort of... A meeting.
I'm a I'm a I'm a bit brain damaged at the moment. I think I'll just sit together with you again and and go through it again.
Speaker 31:07:09
So I think as long as you build an algorithm that respects whatever structure is in the file rather than imposing its own structure.
Speaker 11:07:20
So is is like... Is this and this structurally then always identical? Well,
Speaker 31:07:28
no. It doesn't have to be.
Speaker 11:07:29
That we can treat it with the same algorithm or...
Speaker 31:07:31
But, I mean, it could be as many nodes as you want. Like, this one could be deeper maybe.
Say... So then you'd start with all your utterances here. When you go up to get topic segments, you go to here, here, here, here, here, here.
That might be a bit confusing though because you have things on different levels.
Speaker 11:07:52
Yeah. I'm also not sure how we can go from from bottom up. Always thought it's, like, more that, oh, whatever. I can't think of it at the moment.
Probably this is all too complicated worrying about that at that moment, Daniel.
Speaker 21:08:19
Is there anything else we should discuss?
Speaker 11:08:23
No. Have have we have we decided anything? Are we doing anything? Well, Wednesday. Wednesday, we are meeting and looking at their at their implementation in some more detail to actually understand what's going on.
Speaker 31:08:35
So we'll see if we can get like a mini browser just displays two things synced together.
Speaker 11:08:40
Yes. Two things from their stuff just to make sure that we are like understand it... We understand it enough to to modify it.
Speaker 21:08:47
Yes. We don't have like a group directory or something where we can put all our code in and that kind of thing.
Speaker 31:08:53
It'd be useful. I don't know who you see about that.
Speaker 11:08:59
How would we do that? By just making, like, it readwrite for everyone?
K. Who has most free space on there?
Speaker 31:09:10
Don't know. I don't know. Don't Same here. I've already got a reasonable amount because everything on my account can actually be deleted because I store it all at home as well.
Speaker 11:09:23
Alternatively, we can probably just make another directory on the beefy scratch space. I mean, that's where I'm having gigabytes and gigabytes of stuff at the moment.
Speaker 31:09:32
Is that guaranteed to stay there?
Speaker 21:09:34
No. No. Yeah. We can ask Steve if we can get space. Yeah.
Speaker 31:09:43
Maybe we should send a support form.
Speaker 11:09:45
Yeah. But I think if he sends to support, he'd probably be Listened to. In a better position.
Speaker 21:09:53
Yeah. I'm sure he had to deal with that last year.
Speaker 31:09:56
Yeah. Because that would be really useful is if we had a big directory, especially for transferring stuff.
Having said that, are we allowed to take a copy of the XC corpus? So we should probably ask before we do it.
Speaker 11:10:12
I think he said yes to that. I think that was like in when we were still in the seminar room, I asked that once or like ask is it possible to get it off and nobody said like people are discussing about the technical practicalities, but nobody said anything about being allowed to or not allowed to. I mean, we have access to it here and I guess it probably means that we we can't give it to anybody else, but but
if they give us access to it here sitting on a Dice machine, then there shouldn't be a reason why we shouldn't be able to use it on our laptop. I personally don't have too many friends who would be too keen on getting it anyway. No. No. I have this really excited pirate copied annotated meeting data.
Speaker 51:10:52
So shall we sit together tomorrow then as well?
Speaker 41:10:55
Okay. Yasmin, what is the text you're extracting looking like then at the
Speaker 51:11:04
end? Yeah. What would be best? At the moment, it's just lines.
Speaker 41:11:09
I I think it's actually very similar to what I did for my Mhmm. Speaker
extraction. And I think I would perhaps have to change two lines of code to get you,
for each meeting, a file that says from this millisecond to this millisecond, there was this sequence of words and so on. So that's just changing two lines of code, and
Speaker 51:11:40
it would give you that. Okay. So you... Do you extract the words, the raw text as well?
Speaker 41:11:48
Yeah. So far, I extracted the durations, but it's from the words file. So I could just
Print that. Concatenate the words instead of the durations. And it should... I mean,
should be very straightforward.
I can try to do it and send it to you. Okay. And you have a look at it, all that makes sense for what you want.
Speaker 51:12:31
So have we already extracted from all the files?
Speaker 41:12:34
Yeah. I mean, just let it run over all the files. Did he also order... Yes. Wait. Wait. Wait. Sorry. Yeah. Sorry. I ordered according to the starting times of the utterances.
Speaker 11:12:51
What I just realized, we should really keep different series completely separate for virtually all purposes. Just let's be careful about that because...
Speaker 41:13:02
What do you mean? Like...
Speaker 11:13:03
The Ixicorpus isn't isn't one meeting series. It's several meeting series with different people meeting for completely different things.
Speaker 41:13:12
Yeah. I mean, I I have one... What I give you would be one file for each meeting.
Speaker 11:13:20
For each meeting?
Speaker 41:13:21
Yeah. Not for each meeting series.
Speaker 11:13:23
But like, let's just be careful that whatever we sort of merge together that like at the highest level of merging, it's not the whole XC corpus but individual series.
Speaker 31:13:32
It might be funny to see what has summarized the whole Corpus.
Speaker 11:13:37
Think we might...
Think could be very useful. It's probably somewhere like well or something like it. I think we might just get away with for the whole project just like looking at only one series and just doing within one series. I mean you can do everything you want in one series.
Speaker 41:13:54
Yeah. I mean there's one series that has just one meeting.
Speaker 11:13:57
Oh yeah. That takes a while.
Is is the data always clearly split up a different series? Is it easy to just pick The
Speaker 41:14:07
data is of the form you have three identification letters. So BED or BBD or something and that's always the same group. And then after that there's a number like one or two.
Speaker 11:14:22
At every level everyone has to be careful to really just take even if at the highest level just take stuff from one series and not merge stuff from different series together because
Speaker 31:14:31
that would probably
Speaker 11:14:32
be just majorly messy. So
even if you make one single text file which has the whole corpus, of our corpus, they will still be from one series only. But what you're producing at the moment is like individual text files that sort of have the raw text for a whole meeting as a whole or...
Speaker 41:14:52
Yes. But I mean, as the start times Mhmm. Start for each meeting at zero. You could just probably just add the final second time to the next meeting and so on and just put it all together. But then Yeah. We would have to change the information about who... On which channel it was set to by which person it was set. And that is actually start in another XML document.
So is is anybody creating a real raw text thing at the moment, like, which is just the words?
Speaker 21:15:34
Yeah. That's what I'm gonna need.
Speaker 11:15:37
Yeah. Because that's what I'm gonna need as well.
Speaker 41:15:39
But then just not print out the start and end times.
Speaker 11:15:44
But but if they are... Aren't... Like, so it's it's start and end times just for the file, like, is it just the first and the last line or is it for every single thing in...
Speaker 41:15:51
It's for every single word.
Speaker 31:15:53
I mean, just...
Speaker 41:15:54
For every single utterance. Yeah. That depends on...
Speaker 11:15:56
So what do mean by just not print out that?
Speaker 41:15:59
I I do it with Perl. It's just string manipulation so I would... I mean, I would just...
Speaker 11:16:05
If you're into it, can you make a text that just like makes just the words? Sure. Okay. Do you want it straight flowing? Because I would need something that marks the end of a...
Is yours segmented by topic standard? Like, is there any information that you have to the topic to the automatic topic segmentation? No.
I need something different later anyway. Okay. But for now, if you...
Speaker 21:16:28
That's what MLCC does. It marks the
Speaker 11:16:31
end of segment. Okay. You're gonna put that as an output of yours, the segmentation. Okay. So for now, can you create like sort of just a dump which is pure text, just pure text so that I can get a dictionary and you can work on that for your topic segmentation? Yeah.
Speaker 41:16:45
And... And you would want that all in one file for all the corpus? Or...
Speaker 11:16:52
For for the series. But I can
Speaker 41:16:54
For the series.
Speaker 11:16:54
But I can also deal with separate files. I mean, I can just write the algorithm that it loads all files in a directory or something. But I mean...
Speaker 41:17:00
Yeah. I can directly put it into...
Speaker 11:17:02
If you can put it in one single megafile, that would be quite useful for me.
Speaker 41:17:06
So only words per meeting series.
Speaker 11:17:12
Even though for you, wouldn't it be easy if you had different files? Because then you sort of know, like Yeah. For me
Speaker 21:17:18
it's better if they're binding.
Speaker 11:17:20
So give give me different files as long as like if you could name them in a way that is easy to enumerate over them like whatever one, three, four, five or something. Just anything that I can.
Speaker 41:17:30
Yeah. They will just... I will just take over take over the names I have anyway.
Speaker 11:17:36
Yeah. Is is it something that's easily like to enumerate over? Is it some some ordered pattern? Okay.
Speaker 41:17:43
Cool. One series has the same three starting letters.
Speaker 11:17:47
Okay. Cool. Yeah.
Speaker 41:17:49
So only words and words and times. No.
Speaker 51:17:52
I don't need the times. Just need the words but...
Speaker 11:17:57
The right order.
Speaker 41:17:58
Yeah. You wanted orders. Yeah. Okay.
Speaker 11:18:00
Okay. Anyway... The weekly orders.
Speaker 41:18:05
Or at best start times. Yeah. And do you want... Yeah. Sometimes they're contained in one another. Yeah. It doesn't matter too much. Just after... Mhmm. Okay. Order onwards.
Speaker 11:18:27
When do you think you'll have, a primitive segmentation by some ready made topic segmentation by some ready made tool ready?
Speaker 21:18:35
I mean, that'd be really easy to do once you've got the raw text. Okay. It's just running the script.
Speaker 11:18:41
Okay. Cool. Because I'll need that then when it's done.
Speaker 21:18:44
Yeah. Hopefully, this week.
Speaker 51:18:47
Okay. And
Speaker 41:18:47
I think for all the corpus, it's just from what I know, from my attempts, it's nine megabyte Mhmm. To have means it should
Speaker 31:18:56
be similar to It have
Speaker 11:19:00
What's what's nine megabyte?
Speaker 41:19:02
All the words together for all the meetings.
Speaker 11:19:06
That sounds quite reasonable. That's nine nine characters
Speaker 41:19:10
I'm guessing that's, you know, what I... Because nine megabyte is what I got for when I said for every utterance, this goes from there to there.
Speaker 11:19:22
Is for are we picking one particular series at the moment or
Speaker 21:19:27
we can't?
Speaker 41:19:28
Yeah. I mean, I'm doing it for all of it. It doesn't matter.
Speaker 11:19:33
Okay. Yeah. Yeah. I guess we can fully process the data for all different series and then check which series is the best for the Yeah. Presentation. It sounds quite reasonable, nine megabyte. I mean, if you think if it's roughly a million words and nine characters per word sound... I hope
Speaker 41:19:52
it will be the same for the words. It's just what I...
Yes. I'm gonna build a dictionary then from that. Like just a list of the words and maybe a list of the words with the frequencies or list of the words sorted alphabetically or numerically. What what does anyone want? Is there any wishes for dictionaries?
Speaker 31:20:16
I could just use it with the frequency, I think, until the information density thing's finished. That would be really useful.
Speaker 51:20:24
Mhmm. Mhmm. So
Speaker 11:20:26
I'll create a dictionary.
Speaker 41:20:28
So I'll probably send just one file of the first meeting to all those who need it so that you can have a look whether... That's what
Speaker 11:20:39
you want. Yeah. And then the actual file, can probably, like, copy from your home or something like it.
Speaker 41:20:44
Yeah. I mean, if it's just for one meeting,
Speaker 31:20:46
it's really not too big.
Speaker 11:20:47
Yeah. Yeah. But I'm I'm saying for the whole thing in the end, like, the big thing we probably shouldn't do by email.
Speaker 41:20:55
Yeah. How
Speaker 51:20:56
long would it take to make the frequency counts with the Java hash table?
Speaker 11:21:03
From the time I get the file, can do that in the afternoon. The next... Sort of the next morning. Yeah. Or you mean how long processing time it takes?
Speaker 51:21:11
No. How long you would have to program something.
Speaker 11:21:13
It's it's a box standard algorithm. I've I've sort of... I've written it for for DIL just with half an hour or something similar. It's just you put them in a hash table and and say, well, if it exists already in the hash table, then you increase the count by one end. I probably implement some filter for filtering out numbers or something.
Speaker 51:21:31
Because it's quite easy in Perl as well. It's just a line of code for counting all the words and... Really? How do you do that?... By hashes.
Speaker 11:21:40
Okay. Well, I don't know any... I mean, if anyone wants to do a Perse script for that, that does it Yeah. Does it nicely. I
have no problem with that. But I think I have the Java code virtually ready because for Dell, I wrote something very similar. Like, for Dell, I wrote something that counts the different occurrences of all the tags.
Speaker 31:22:01
If you're doing it in Java, could you serialize the output as well as writing it to a file? Sorry? If you're doing it in Java, could you serialize the...
Speaker 11:22:11
The hash table.
Speaker 31:22:12
Yeah. As well as writing it to a file.
Speaker 11:22:15
I've never serialized anything. Really easy. Wouldn't that be absolutely massive, though?
Speaker 31:22:21
I don't see why it'd be any more massive than the file.
Speaker 11:22:24
And then serial... And then write the serialization to a file. Yeah. So you want like a like a file which is the serialization of
Speaker 31:22:31
a hash table?... Passing the
file representation of it and how... Because I'd be using it in Java anyway. So I'd just be building the data structure again.
Speaker 11:22:41
I'll I'll check if I understand how it works. I mean, otherwise, I can give you the code for loading a dictionary. It's just... It's sort of... It's a line break separated file.
Speaker 31:22:52
Yeah. Seems like a bit silly to be passing it over and over again kind of thing.
Yeah. I see if I understand how to serialize this. There's a serialized command so that gives me one mega mother I
Speaker 31:23:08
think all the collections and things implement serializable already.
Speaker 11:23:14
Yeah. But do they automatically write to the file? Anyway, I'll figure that out. You don't have to.
So Dave and me look at how Knight XML works and...
Speaker 31:23:32
Generally, I'll try and... I'll either work some more on TF IDS summarizer or do the audio thing.
Speaker 11:23:46
I'll build a dictionary as soon as I get the text.
When do we have to meet again then with this?
Speaker 21:23:59
I don't know. Suppose we're just getting on with all
Speaker 11:24:01
our components. How are we gonna do a demonstration next week? Oh my god.
Speaker 31:24:07
Do we have to demonstrate something next week? What
Speaker 51:24:09
do we have to demonstrate? No.
Speaker 11:24:11
No. Not demonstrate. But, like, didn't you say that... Or didn't we sort of agree that it would be useful to have a demonstrator of it like some primitive thing working next Yeah.
Speaker 21:24:20
Suggested that we could have an initial prototype.
Speaker 11:24:24
That's gotta be very prototype.
Speaker 21:24:26
I know. I'll surprised if we can get anything working by next week.
Speaker 11:24:36
Alright. Let's go. Sorry.
I feel like like hanging mid air and not really like finding a point where you can get your teeth into it and start working properly.
Speaker 31:24:52
Yeah. I know.
Speaker 11:24:53
It's also fuzzy though.
Speaker 31:24:58
I think it's because we had to specify ourselves that it's not as, like, focused specification of most work.
Speaker 11:25:07
Yeah. But at at the moment but at the moment, it's also an implementation. I love, like, with the data structures. I'm just, like, over these vague ideas of some trees and...
Speaker 31:25:15
Once we start doing it, it will become more or less obvious, I think anyway.
Speaker 11:25:19
Yeah. It's just we are halfway through the project time, but that's what just freaks me out.