WO2011110897A1 - Device and method for context recognition - Google Patents

Device and method for context recognition Download PDF

Info

Publication number
WO2011110897A1
WO2011110897A1 PCT/IB2010/051008 IB2010051008W WO2011110897A1 WO 2011110897 A1 WO2011110897 A1 WO 2011110897A1 IB 2010051008 W IB2010051008 W IB 2010051008W WO 2011110897 A1 WO2011110897 A1 WO 2011110897A1
Authority
WO
WIPO (PCT)
Prior art keywords
context
sensor
dependent
clock input
likelihood
Prior art date
Application number
PCT/IB2010/051008
Other languages
French (fr)
Inventor
Jussi Artturi Leppanen
Antti Eronen
Original Assignee
Nokia Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nokia Corporation filed Critical Nokia Corporation
Priority to PCT/IB2010/051008 priority Critical patent/WO2011110897A1/en
Publication of WO2011110897A1 publication Critical patent/WO2011110897A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9537Spatial or temporal dependent retrieval, e.g. spatiotemporal queries

Definitions

  • the present invention relates to context sensing apparatus.
  • the invention further relates to, but is not limited to, context sensing apparatus in portable devices.
  • HCI Human Computer Interaction
  • hardware such as the type of interface, e.g. touch screen, keyboard, voice, visual display, audio display
  • software such as how to format the display information, designing efficient data input operations using the hardware, etc.
  • context recognition systems are currently flawed. For example sensor information may not always be correct or available, thus for "position" context recognition GPS location based sensor information may be missing if the user operates the apparatus indoors.
  • context values are difficult to distinguish from each other, for example an audio context recogniser can have problems distinguishing between office and home contexts as they may sound similar.
  • Some research has been carried out to improve detection sensitivity for example the use of Hidden Markov Model (HMM) systems to recognise different environmental noise events, however as described above similar sounding environments can produce problems recognising between them.
  • HMM Hidden Markov Model
  • many different types of sensors are used and the information from each sensor is combined in order to improve the context recognition accuracy. However combining multiple sensors can be expensive in terms of processing power and power consumption in operating multiple sensors in parallel.
  • This battery power and processing power cost can therefore be a further problem.
  • This invention proceeds from the consideration that the use of time and calendar information may assist in the determination of context variables to be applied to various applications and thus improve the context determination accuracy within the apparatus.
  • Embodiments of the present invention aim to address the above problem.
  • a method comprising: receiving at least one sensor input; receiving a clock input; and identifying at least one apparatus context dependent on the at least one sensor input and the clock input.
  • the method may further comprise at least one of: determining an operational mode for an apparatus dependent on the apparatus context; adapting an user interface dependent on the apparatus context; adjusting data provided to at least one application dependent on the apparatus context; filtering data dependent on the apparatus context; selecting a service dependent on the apparatus context; provide implicit interaction with the apparatus dependent on the apparatus context; communicate the context to at least one further apparatus; and performing an operation dependent on the apparatus context.
  • Identifying at least one apparatus context may comprise: determining a probability for each apparatus context dependent on the at least one sensor input and the clock input; and selecting the at least one apparatus context with the largest probability.
  • Determining a probability for each apparatus context dependent on the at least one sensor input and the clock input may comprise: determining a likelihood for each apparatus context dependent on the at least one sensor input; determining a second likelihood for each apparatus context dependent on the clock input; and generating the probability for the each context by combining the likelihood by the second likelihood for each context.
  • Determining the second likelihood may comprise: generating a likelihood for each context occurring at the time/date value of the clock input; and generating the second likelihood as the exponentiation of the likelihood for each context occurring at the time/date value of the clock input by a predetermined value.
  • Generating the likelihood for each context occurring at the time/date value of the clock input may comprise: determining the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input; and dividing the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input by the total number of prior occurrences or distribution of each apparatus context.
  • the method may further comprise updating the number of prior occurrences or distribution of each apparatus using the identified apparatus context dependent at the time/date value of the clock input.
  • the sensor input may comprise at least one of: camera sensor; microphone sensor; temperature sensor; humidity sensor; tactile sensor; electromyography sensor; chemical sensor; compass; satellite positioning sensor; gyroscope/accelerometer; antenna sensor; battery sensor; electroencephalograph; pulse monitor; blood pressure sensor; and electrocardiograph.
  • the clock input may comprise a time/date value which defines a time period of a day value and a day value.
  • Identifying the at least one apparatus context dependent on the at least one sensor input and the clock input may further comprise identifying the at least one context dependent on a profile value associated with the user.
  • an apparatus comprising at least one processor and at least one memory including computer program code the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus at least to perform: receiving at least one sensor input; receiving a clock input; and identifying at least one apparatus context dependent on the at least one sensor input and the clock input.
  • the apparatus may be further caused to perform at least one of: determining an operational mode for an apparatus dependent on the apparatus context; adapting an user interface dependent on the apparatus context; adjusting data provided to at least one application dependent on the apparatus context; filtering data dependent on the apparatus context; selecting a service dependent on the apparatus context; provide implicit interaction with the apparatus dependent on the apparatus context; communicate the context to at least one further apparatus; and performing an operation dependent on the apparatus context.
  • the apparatus caused to perform identifying at least one apparatus context may be further caused to perform: determining a probability for each apparatus context dependent on the at least one sensor input and the clock input; and selecting the at least one apparatus context with the largest probability.
  • the apparatus caused to determine a probability for each apparatus context dependent on the at least one sensor input and the clock input may be further caused to perform: determining a likelihood for each apparatus context dependent on the at least one sensor input; determining a second likelihood for each apparatus context dependent on the clock input; and generating the probability for the each context by combining the likelihood by the second likelihood for each context.
  • the apparatus caused to determine the second likelihood may be further caused to perform: generating a likelihood for each context occurring at the time/date value of the clock input; and generating the second likelihood as the exponentiation of the likelihood for each context occurring at the time/date value of the clock input by a predetermined value.
  • the apparatus caused to generate the likelihood for each context occurring at the time/date value of the clock input may be further caused to perform: determining the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input; and dividing the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input by the total number of prior occurrences or distribution of each apparatus context.
  • the apparatus may be further caused to perform updating the number of prior occurrences or distribution of each apparatus using the identified apparatus context dependent at the time/date value of the clock input.
  • the sensor input may comprise at least one of: camera sensor; microphone sensor; temperature sensor; humidity sensor; tactile sensor; electromyography sensor; chemical sensor; compass; satellite positioning sensor; gyroscope/accelerometer; antenna sensor; battery sensor; electroencephalograph; pulse monitor; blood pressure sensor; and electrocardiograph.
  • the clock input may comprise a time/date value which defines a time period of a day value and a day value.
  • the apparatus caused to identify the at least one apparatus context dependent on the at least one sensor input and the clock input may be further caused to perform identifying the at least one context dependent on a profile value associated with the user.
  • an apparatus comprising: a context determination engine configured to identify at least one apparatus context dependent on at least one received sensor input and at least one received clock input.
  • the apparatus may further comprise a processor configured to determine an operational mode for the apparatus dependent on the apparatus context.
  • the apparatus may further comprise an application processor configured to perform an operation dependent on the apparatus context.
  • the apparatus may further comprise a processor configured to adapt an user interface dependent on the apparatus context.
  • the apparatus may further comprise a processor configured to adjust data provided to at least one application dependent on the apparatus context.
  • the apparatus may further comprise a processor configured to filter data dependent on the apparatus context.
  • the apparatus may further comprise a processor configured to select a service dependent on the apparatus context.
  • the apparatus may further comprise a processor configured to provide implicit interaction with the apparatus dependent on the apparatus context.
  • the apparatus may further comprise a processor configured to communicate the context to at least one further apparatus.
  • the context determination engine may comprise: a probability estimator configured to determine a probability for each apparatus context dependent on the at least one sensor input and the clock input; and a context selector configured to select the at least one apparatus context with the largest probability.
  • the probability estimator may comprise: a sensor likelihood estimator configured to determine a likelihood for each apparatus context dependent on the at least one sensor input; a time likelihood estimator configured to determine a second likelihood for each apparatus context dependent on the clock input; and a likelihood combiner configured to generate the probability for the each context by combining the likelihood by the second likelihood for each context.
  • the time likelihood estimator may comprise an exponent engine configured to determine the likelihood for each context occurring at the time/date value of the clock input by estimating the exponent of the likelihood for each context occurring at the time/date value of the clock input by a predetermined value.
  • the time likelihood estimator may comprise a statistical determiner configured to determine the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input; and dividing the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input by the total number of prior occurrences or distribution of each apparatus context.
  • the time likelihood estimator may comprise an updater configured to update the number of prior occurrences or distribution of each apparatus using the identified apparatus context dependent at the time/date value of the clock input.
  • the apparatus may comprise a sensor configured to generate the received sensor input, the sensor comprising at least one of: camera sensor; microphone sensor; temperature sensor; humidity sensor; tactile sensor; electromyography sensor; chemical sensor; compass; satellite positioning sensor; gyroscope/accelerometer; antenna sensor; battery sensor; electroencephalograph; pulse monitor; blood pressure sensor; and electrocardiograph.
  • a sensor configured to generate the received sensor input, the sensor comprising at least one of: camera sensor; microphone sensor; temperature sensor; humidity sensor; tactile sensor; electromyography sensor; chemical sensor; compass; satellite positioning sensor; gyroscope/accelerometer; antenna sensor; battery sensor; electroencephalograph; pulse monitor; blood pressure sensor; and electrocardiograph.
  • the apparatus may comprise a clock configured to generate the clock input, wherein the clock input may comprise a time/date value which defines a time period of a day value and a day value.
  • the context determination engine may further identifying the at least one apparatus context further dependent on a profile value associated with the user.
  • an apparatus comprising: processing means configured to identify at least one apparatus context dependent on at least one received sensor input and at least one received clock input.
  • a computer-readable medium encoded with instructions that, when executed by a computer perform: receiving at least one sensor input; receiving a clock input; and identifying at least one apparatus context dependent on the at least one sensor input and the clock input.
  • An electronic device may comprise apparatus as described above.
  • a chipset may comprise apparatus as described above.
  • FIG 1 shows schematically an electronic device employing embodiments of the application
  • FIG 2 shows schematically the electronic device shown in Figure 1 in further detail
  • Figure 3 shows schematically a context selection engine shown in Figure 2 according to some embodiments of the application
  • Figure 4 shows schematically a time conditional processor shown in Figure 3 according to some embodiments of the application
  • Figure 5 shows schematically a probability distribution of possible example context values against time
  • Figure 6 shows schematically a flow chart illustrating the operation of the context selection engine according to some embodiments of the application
  • Figure 7 shows schematically a flow chart illustrating the operation of the time conditional processor with respect to prior probability value maintenance according to some embodiments of the application
  • Figure 8 shows schematically a flow chart illustrating the operation for generating initial prior probability values according to some embodiments of the application.
  • Figure 9 shows schematically a flow chart illustrating the operation for generating updated prior probability values according to some embodiments of the application.
  • Figure 1 shows a schematic block diagram of an exemplary electronic device 10 or apparatus, which may incorporate enhanced context determination components and methods.
  • These embodiments of the application use the routine of the user to assist in determining context by allowing sensor based context determination factors to be weighted based on experienced contexts at past times.
  • the electronic device 10 may for example be a mobile terminal or user equipment for a wireless communication system.
  • the electronic device may be any audio player, such as an mp3 player or media player, equipped with suitable microphone array (sensors) as described below.
  • the electronic device may be a desktop computer, laptop computer, game device, digital camera/camcorder, audio/video player, television device, radio receiver, digital video recorder, positioning device, wrist watch, portable digital assistant (PDA), any combination thereof, and/or the like, equipped with suitable microphone and/or other sensors as described below.
  • PDA portable digital assistant
  • the electronic device 10 in some embodiments comprises a processor 21 .
  • the processor 21 may be configured to execute various program codes.
  • the implemented program codes may comprise enhanced context determination code.
  • the implemented program codes 23 may be stored for example in the memory 22 for retrieval by the processor 21 whenever needed.
  • the memory 22 could further provide a section 24 for storing data, for example sensor data or prior context determination data that has been processed in accordance with the embodiments.
  • the context determination enhancement code may in embodiments be implemented at least partially in hardware or firmware.
  • the processor 21 may in some embodiments be linked via a digital-to-analogue converter (DAC) 32 to a speaker 33.
  • DAC digital-to-analogue converter
  • DAC digital-to-analogue converter
  • the apparatus 10 in some embodiments comprises a user interface 15, which is connected to the processor 21 and enables a user to input commands to the apparatus 10, for example via a keypad, and/or to obtain information from the apparatus 10, for example via a display (not shown).
  • the user interface may furthermore in some embodiments be any suitable combination of input and display technology, for example a touch screen display suitable for both receiving inputs from the user and displaying information to the user.
  • the apparatus 10 in some embodiments comprises a transceiver, which is also connected to the processor 21 and is configured to enable communication with other electronic devices, for example via a wireless communication network.
  • the electronic device may comprise sensors or a sensor bank 16.
  • the sensor bank 16 receives information about the environment in which the electronic device 10 is operating and passes this information to the processor 21 in order to assist the processor in determining the context, or environmental conditions of the apparatus and in particular to affect the processor 21 in performing applications.
  • the sensor bank 16 may comprise at least one of the following set of sensors.
  • the apparatus 10 and the sensor bank in particular in some embodiments further comprises at least one microphone in a microphone array 1 1 for inputting or capturing acoustic waves and outputting audio or speech signals to be processed according to some embodiments of the application.
  • the apparatus 10 in such embodiments may further comprise an analogue-to- digital converter (ADC) 14 configured to convert the input analogue audio signals from the microphone array 1 1 into digital audio signals and provide the digital audio signals to the processor 2 .
  • ADC analogue-to- digital converter
  • These audio or speech signals may according to some embodiments be transmitted to other electronic devices via the transceiver 13 or may be stored in the data section 24 of the memory 22 for later processing.
  • the sensor bank 16 may in some embodiments comprise a camera module.
  • the camera module may in some embodiments comprise at least one camera having a lens for focusing an image on to a digital image capture means such as a charged coupled device (CCD).
  • the digital image capture means may be any suitable image capturing device such as complementary metal oxide semiconductor (CMOS) image sensor.
  • CMOS complementary metal oxide semiconductor
  • the camera module further comprises in some embodiments a flash lamp for illuminating an object before capturing an image of the object.
  • the flash lamp is in such embodiments linked to a camera processor for controlling the operation of the flash lamp.
  • the camera may be configured to perform infra-red and near infra-red sensing for low ambient light sensing.
  • the at least one camera may be also linked to the camera processor for processing signals received from the at least one camera before passing the processed image to the processor.
  • the camera processor may be linked to a local camera memory which may store program codes for the camera processor to execute when capturing an image.
  • the local camera memory may be used in some embodiments as a buffer for storing the captured image before and during local processing.
  • the camera processor and the camera memory are implemented within the processor 21 and memory 22 respectively.
  • the camera module may comprise more than one camera capturing images at the same time at slightly different positions or orientations.
  • the sensor bank 16 comprises a position/orientation sensor.
  • the orientation sensor in some embodiments may be implemented by a digital compass or solid state compass configured to determine the electronic devices orientation with respect to the horizontal axis.
  • the position/orientation sensor may be a gravity sensor configured to output the electronic device's orientation with respect to the vertical axis.
  • the gravity sensor for example may be implemented as an array of mercury switches set at various angles to the vertical with the output of the switches indicating the angle of the electronic device with respect to the vertical axis.
  • the position/orientation sensor comprises a satellite position system such as a global positioning system (GPS) whereby a receiver is able to estimate the position of the user from receiving timing data from orbiting satellites.
  • GPS information may be used to derive orientation and movement data by comparing the estimated position of the receiver at two time instances.
  • the sensor bank 16 further comprises a motion sensor in the form of a step counter.
  • a step counter may in some embodiments detect the motion of the user as they rhythmically move up and down as they walk. The periodicity of the steps may themselves be used to produce an estimate of the speed of motion of the user in some embodiments.
  • the step counter may be implemented as a micro-electromechanical machine systems (MEMS) sensor or gravity sensor.
  • the sensor bank 16 may comprises at least one accelerometer configured to determine any change in motion of the apparatus.
  • the change in motion/position/orientation may be an absolute change where the apparatus changes in motion/position/orientation, or a relative change where the apparatus 10 changes in motion/position/orientation with respect to a localised object, for example relative to the user of the apparatus.
  • the position/orientation sensor may comprise a capacitive sensor capable of determining an approximate distance from the device to the user's head when the user is operating the electronic device. It would be appreciated that a proximity position/orientation sensor may in some other embodiments be implemented using a resistive sensor configuration, an optical sensor, or any other suitable sensor configured to determining the proximity of the user to the apparatus.
  • the sensor input may be received from any one of a temperature sensor; a humidity sensor; a tactile sensor; a electromyography sensor; a chemical sensor; a compass; an antenna sensor; a battery sensor; an electroencephalograph; a pulse monitor; a blood pressure sensor; and an electrocardiograph. It is to be understood again that the structure of the apparatus 10 could be supplemented and varied in many ways.
  • the sensors 16 pass data to the context determination engine 103.
  • the microphone array and analogue-to-digital converter 1 1 , 14 furthermore pass audio data configured in a suitable form to the context determination engine 103.
  • the apparatus comprises a clock/calendar processor 101 which in some embodiments is part of the processor 21 , and in these embodiments maintains calendar and clock information or data.
  • the clock/calendar data in these embodiments is passed to the context determination engine 103.
  • the context determination engine 103 is configured to receive the sensor/audio/time and calendar information and process this information to generate context probabilities and then determine or select a context based on the largest probability.
  • the context determination engine 103 is described with respect to being a maximum likelihood selector however it would be appreciated that any suitable probability based process could be used such as Hidden Markov Models (HMM), nearest neighbour selection, artificial neural network (ANN) or any suitable pattern recognition approach.
  • HMM Hidden Markov Models
  • ANN artificial neural network
  • the context determination engine 103 is described with regards to probability and maximum likelihood selection operations.
  • the context determination engine 103 is described in further detail with respect to Figure 3.
  • the context determination engine 103 comprises a context recognition processor 201 .
  • the context recognition processor 201 receives the sensor and audio data and outputs a series of probability or likelihood values for each known context.
  • the likelihood values L can be represented as:
  • the observation set may comprise a sequence of feature vectors of mel-frequency cepstral coefficients and their first and second order time derivatives.
  • the output of the context probabilities may be carried out using any suitable pattern or probability determining process.
  • a Hidden Markov Model HMM is used following feature extraction.
  • the audio signal can use a short analysis frame typically with length 30 milliseconds with 15 millisecond overlap, a hamming window function and extracted features including any of a zero crossing rate, short time average energy, mel-frequency cepstral coefficients, a first derivative of the mel-frequency cepstral coefficients, a second derivative of the mel-frequency cepstral coefficients, band energy, spectral centroid, bandwidth, spectral roll off, spectral flux, linear prediction coefficients, and linear prediction cepstral coefficients.
  • the HMM parameters may be obtained e.g. with an Expectation Maximization (EM) algorithm, which may be used to train a HMM for each context in an off-line training stage.
  • the training stage uses a training set, which comprises at least one recording from each context. Features are extracted from the training recordings of each context, and then the EM algorithm is used to iteratively find parameters for the context HMMs. It is noted that this training stage can be performed in another device such as a server computer or a personal computer, before deploying the system to the target device.
  • the parameters of the HMMs including e.g. the transition probability matrix, initial probabilities, and the parameters of the state densities may then be stored at the context recognition processor 201 .
  • the state densities are Gaussian Mixture Models (GMM), and the state density parameters comprise the weights, means, and covariance matrices for each state density.
  • GMM Gaussian Mixture Models
  • the context recognition processor 201 needs to produce probabilities for each context, the likelihood of each context HMM having produced the input feature sequence is evaluated. This likelihood evaluation can be done e.g. using Viterbi decoding or the forward-backward procedure.
  • the known context sets are related to the tasks carried out by the user.
  • three members there may be many different contexts to be determined each of which in some embodiments comprises at least one context set member.
  • the context selection engine comprises a time conditional processor 203.
  • the time conditional processor 203 receives the clock/calendar data from the clock/calendar 101 and comprises a series of time-conditional probabilities for each known context. These probabilities may be represented mathematically as: where q represents the y ' th context, is the current time index, M is the total number of time periods and N is the number of contexts.
  • the time indices for example can correspond to time-intervals of a 24-hour day. For example, a day can be split into 1 hour-long intervals, in which case the value for M would be 24 and t 4 correspond to times between 3:00 am and 3:59 am.
  • the context selection engine may comprise a series of probability density functions over time for the known context set members. These probability density functions can be represented mathematically as: where Q represents the context j and t refers to time.
  • probability density functions may be continuous functions (for example, a mixture of Gaussians) of time or approximated by discrete probabilities (normalized histograms, for example).
  • discrete probabilities normalized histograms, for example.
  • the mathematical representation is: where refers to the z ' th time period.
  • the time conditional processor can be configured to generate weighting values W ⁇ for the set of known contexts and for the current time. These weighting values W) are obtained from the probability density functions B or Ay b choosing the likelihood values for the known contexts and the current time. Mathematically this can be expressed as follows:
  • the time conditional processor 203 may output these weighting values to the modified context manager 205.
  • the time conditional processor 203 may in some embodiments generate these weighting values when needed or in some embodiments access the weighting values by using a look-up table which can be maintained in memory 22.
  • the time conditional processor can compute the values By or Dy from the stored counts when needed. The computation may be done as follows:
  • D iJ C(Cj,ti) / ⁇ i ⁇ C(Cj,t l ), where C(C j , ) is the number of times (count) context j and time i have occurred together. Storing the counts (C(C j ,t)) has the benefit of simplifying the adaptation of the system.
  • the context selection engine 103 further comprises a modified context manager 205.
  • the modified context manager 205 receives the context recognition processor context likelihoods L t which are dependent on the sensor/audio data and the context weighting values W t dependent on the time data from the time conditional processor 203 and generates a modified list of context probabilities A t .
  • the modified context probabilities A t may for example be generated by the modified context manager 205 by multiplying each context likelihood I, ⁇ with the weighting values Wj. This for example may be represented mathematically as:
  • the modified context probabilities could also be generated by summing the logarithm of the context likelihood with a logarithm of the weighting values.
  • the output modified context likelihood are passed then from the modified context manager 205 to the context selector 207.
  • the operation of combining the context probabilities is shown in Figure 6 by step 507.
  • the context determination engine 103 in some embodiments comprises a context selector 207.
  • the context selector 207 in some embodiments selects the context with the highest probability and outputs the context selected to the application processor 105.
  • step 509 The step of selecting the highest probability context is shown in Figure 6 by step 509.
  • the application processor 105 receives the selected information and then may apply the context information to the application in order to modify the application output. For example the application may select how to notify the user of the apparatus when receiving a call.
  • the context determination engine 103 is configured to output either the value of home, work, shopping, which represents whether the user is at home, at work, or shopping and thus the application processor can select relevant vibration or audio notification options. For example when detecting the context at home, the user may be notified using an audio notification, when at work only a vibration but no audio notification and when shopping notify the user using a loud audio notification.
  • the determination of the context may allow an adaption of an user interface dependent on the apparatus context. For example, certain icons on the user interface considered relevant to the current context might be made visible or more prominent by the apparatus. In other examples options such as backlighting levels or text sizing on the display may be adjusted according to the determined apparatus context.
  • the determination of the context enables the processor to adjust a set of data provided to at least one application.
  • the apparatus might provide the current context to a navigation application such that it can adapt its operation accordingly.
  • the context may indicate that the user is currently cycling and the navigation application might thus provide routes suitable for cycling when it receives the context information.
  • the determination of the context further in some embodiments allows a processor to filter information or data dependent on the context or use the context as an additional search criteria. For example, when a user is making Web searches on a certain location or environment, the results may be ranked accordingly to their relevance to the current context.
  • the determination also can permit a processor discover at least one service dependent on the context.
  • the context may be used as a criterion when discovering Web services, to find a service which best matches the user's current context.
  • the determination of the context enables the processor to provide implicit interaction with the device dependent on the context.
  • the device may automatically start an application dependent on the context.
  • the device may notice based on the context information that the user starts running and it may thus start an exercise monitoring application such as the Sports Tracker automatically.
  • the determination of the context enables the processor to communicate the context information to at least one other apparatus. For example, devices in a smart environment may exchange context information in order to adjust their operation accordingly.
  • step 51 1 The application of the detected context to the application operation is shown in Figure 6 by step 51 1 .
  • the context selector 207 may furthermore be connected in such a way to feed back the selected context to the time conditioner processor 203 in order to allow the time conditional processor to "learn" in some embodiments.
  • time conditional processor 203 and the operation of the time conditional processor 203 with respect to some embodiments which are configured to generate and update the prior probabilities is shown in further detail.
  • time conditional processor 203 comprising a prior probability generator/buffer 303.
  • the prior probability generator/buffer 303 is configured to receive a clock/calendar data input and output weighting values Wi reflecting the probabilities of each known context Ct dependent on the time/calendar data input.
  • the prior probability generator/buffer 303 comprises a look-up table or access to a memory such as memory 22 within which a series of prior probabilities are stored for each known context dependent on the time/calendar value.
  • a graph shows probabilities of each example context (home, work, or shopping) throughout the day.
  • the operation of generating context probabilities dependent on the time data would cause the time conditional processor 203 and in these embodiments the prior probability generator 303 to output three weighting values, the probability of being at work P(work
  • 9:25) 75% or 0.75; the probability of being at home P(home
  • 9:25) 15% or 0.15, and the probability of shopping P(shop
  • 9:25) 10% or 0.1 .
  • the probability density function Dy may be represented in a similar graph format showing the probability density function rather than the By probabilities described above.
  • This for example is the operation of generating the prior probability or weighting values as described above where the context probabilities and on time data operation is carried out by the time conditional processor 203.
  • prior probabilities used to generate the weighting values in some embodiments may be configured to be adjustable, in other words to obtain a more optimal performance the prior probabilities are adjusted to suit the profile of the user.
  • the time conditional processor 203 comprises a profile selector 30 .
  • the profile selector 301 is configured to generate a profile or receive a profile selection, for example the user may select from the user interface an option indicating what type of activities the user may perform during the day and through the week. In other words for the examples described above for the contexts of work, home, and shopping the user may select whether or not they are working during the day, working a normal Monday-to-Friday job, working at night, or on shift operation.
  • the profile selector 301 may output a selected profile indicator to the prior probability generator/buffer 303.
  • the profile selector 301 may itself provide a series of prior probabilities, in other words an initial guess of the time dependent prior probabilities for different user types (such as student, pensioner, etc.).
  • the profile selector 301 may in these embodiments then prompt the user to select the most fitting user type and thus provide some initial values for the prior probabilities. This operation may for example occur at the shop when the user buys the apparatus when the user first operates the apparatus, or when the user logs onto a central server and registers the apparatus, for example when the operator registers the device at the Ovi service.
  • the user when registering the device the user may be presented not simply with a user type but a set of questions to determine a closest behavioural category.
  • different behavioural categories can be created via a central server based on customer segmentation or automatically by monitoring different customer behaviour patterns.
  • the prior probabilities may also be initially generated automatically based on user data available from the user's own central service account such ovi.com and based on the phone model the user is using.
  • the prior probability generator/buffer 303 in some embodiments rather than receiving a predetermined template profile probability generates an initial set of prior probabilities dependent on the profile selected. In some embodiments where the profile is being reselected the prior probability generator/buffer may simply receive or recall from memory a previously calculated series of prior probabilities.
  • the prior probability generator/buffer 303 may request that an external server (with much greater user information storage capacity and processing capability) generates the initial prior probability values.
  • FIG. 8 a flow diagram showing operations for generating the prior probabilities for the first time for a range of profiles for some embodiments is shown in further detail.
  • the prior probability generator 303 generates the probabilities however it would be understood as described above that these operations may be carried out at least partially by systems external to the apparatus for example in a central server and the results passed to the prior probability generator/buffer, for example via the transceiver.
  • the prior probability generator/buffer 303 may initialise a first or outer loop, where the loop variable represents each of the profile values.
  • the loop variable represents each of the profile values.
  • the profiles may represent the status or category of the user, for example office worker, shift worker, home keeper, unemployed or in some embodiments represent periods of time, such as weekday, weekend day, Saturday, Sunday, Winter, Summer, etc.
  • the following operation steps are all repeated.
  • the operation of setting up the outer "profile" loop is shown in Figure 8 by step 701.
  • the prior probability generator/buffer 303 in some embodiments initialises a second loop internal to the first loop where the loop variable is a time variable dividing the time period over which the prior probabilities are calculated into a series of periods M (1 to M).
  • the time period may be a day and the division may be an hour or a number of minutes (e.g. 15min divisions) depending on how detailed the weighting values variability is required.
  • the prior probability generator/buffer 303 may then calculate the total training sequence occurrences, in other words may calculate how many pieces of information concerning the context variables it has stored.
  • the total training sequences with respect to that particular profile and time division instance is mathematically represented by C(tot).
  • C(tot) may represent the total number of responses to the question of where the user is at 9:25am.
  • the calculation of the total training sequence occurrences is shown in Figure 8 by step 705.
  • the prior probability generator/buffer 303 may then initialize a third or inner loop wherein the third or inner loop variable is the context variable.
  • the third or inner loop variable is the context variable.
  • the prior probability generator/buffer 303 may then calculate the number of training sequences occurring for the particular context at that particular time for that particular profile, this may be represented mathematically by the value C( ). For the examples described above the total number of responses to the question of where the user is at 9:25am which are home is C(home).
  • the prior probability generator 303 may then calculate a probability for the particular instance of context and that time and for that profile by dividing the number of training sequence occurrences over the total number of occurrences for that time and profile. In other words the prior probability generator 303 may represent the probability mathematically by:
  • the calculation of the probability for the particular context instance at that time and for that profile value is shown in Figure 8 by step 71 1.
  • the prior probability generator/buffer 303 may then repeat the context loop. The operation of repeating the context loop is shown in step 713 of Figure 8. Furthermore once all the probabilities for contexts for that particular time instant has been carried out, the prior probability generator/buffer in these embodiments move on to the next time division. The next time division operation is shown in Figure 8 by step 715. Furthermore the prior probability generator/buffer 303 may once calculating for all of the time division for the particular profile value then carry out the next profile loop. The operation of the next profile value loop is shown in Figure 8 by the step 717. In such a manner in some embodiments the prior probability generator/buffer may calculate a whole series of initial prior probabilities for each profile.
  • a similar set of processes may be performed by a prior probability distribution processor calculating the probability distributions based on prior event instances or distributions.
  • the prior probabilities be adapted according to profile but they may be adapted according to further context determination results.
  • the time conditional processor may comprise a prior probability adaptor 305.
  • the prior probabilities for a particular time value (such as the current time/calendar value or the determined result time/calendar value) may be passed to the prior probability adaptor 305.
  • prior probability adaptor 305 is configured to continually update the prior probability adapter dependent on information passed from the context selector 207 and the clock/calendar in order that the time conditional processor can adapt to the user's changing and evolving lifestyle. For example the above initial generation operations may prove to be out of date and thus have errors where the user adjusts their lifestyle such that their working shifts or shopping trips occur later or earlier in the day or change throughout the year.
  • the prior probability adapter 305 is configured in such embodiments to detect when it receives a valid context selection output to attempt to generate adapted prior probabilities.
  • the triggering of the prior probability adapter 305 to generate or store new profile probabilities occurs when a new context output is output with a sufficiently high confidence level.
  • a sufficiently high confidence level may be determined when the probability (or probability density) of the selected event is much greater than the others.
  • the user may be requested to review the context output and a high confidence level established when the user agrees with the context output.
  • the new context generation adaption is carried out whenever a new context output has been detected.
  • the time conditional processor 203 may detect a new context output as shown in the operation step 605 in Figure 7. In such embodiments when a new context output is detected the generation/storage of new profile prior probabilities by the prior probability adapter 305 as described with regards to Figure 9 may be carried out.
  • the prior probability adapter 305 first adapts the probabilities for the determined context value at that particular time and for that particular profile value by recalculating the probabilities B Uj or D tJ .
  • the recalculation is done by incrementing the appropriate element in the stored table of counts by one and recalculating the B j or y values. For example, if we adapt the system with the input context "car" and time 10:30, we would add one to the corresponding count C(C car , tw-u) in the count table when 1 hour time periods are for example used. In other words this incrementing of the counts for the probability embodiments may be represented mathematically by:
  • step 801 The step of calculating (for the detected result context), the new probability is shown in Figure 9 by step 801 .
  • the prior probability adapter 305 in some embodiments can calculate the prior probabilities for the non determined context outputs.
  • the value that the table of counts is incremented with can be a number other than one.
  • the value may be changed or varied depending on how greatly an adaptation weight is required.
  • the prior probability adapter may make the value large in order to make a rapid adjustment or adaptation variability or make small when a slower adaptation rate is desired.
  • fast adaptation may be desirable when the system is taken into use and it needs to learn the behaviour of the user fast.
  • stronger adaptation may be performed when explicit confirmation on the correct context is received from the user, whereas weaker adaptation may be performed when the adaptation is performed in an unsupervised manner, without any input from the user.
  • the combined likelihoods are smaller than a predetermined threshold for all contexts, it may be determined that the user has changed his behaviour and faster adaptation is desired. As a yet another example, when the user of the device changes a faster adaptation rate is desirable.
  • the prior probability adaptor can both adapt the probabilities to follow the user's behaviour but also be able to change the rate of adaptation.
  • the weighting values itself can be weighted by a value (a) where a is a weighting which affects the effect of the temporal weighting probabilities on the context recognition result probabilities.
  • the weight a may define the number of times by which the weighting is multiplied by itself so that the weighting value is raised when the context with the highest prior probability matches with the recognition result (in other words a is reduced in value) and lowered when they do not match (in other words the value of a is increased).
  • user input may be used in the form of a review of the accuracy of prior event context outputs in order to set or adjust the weight value.
  • the application assists in context recognition by making certain contexts more likely to be detected based on the users routine and so is based on the current time of the day, or time of the week for instance.
  • the prior probabilities may be adaptable to better suit the user's activities.
  • the embodiments of the application may allow a method for the recognition of context based on time based prior probabilities, a method for adapting time based prior probabilities to user activity patterns, a method for providing the context recognition system an initial, predefined prior probability set, multiple prior probabilities for a single user and also adaptable prior probability of weighting.
  • user equipment may comprise an audio processor such as those described in embodiments of the invention above.
  • electronic device and user equipment is intended to cover any suitable type of wireless user equipment, such as mobile telephones, portable data processing devices or portable web browsers.
  • the various embodiments of the invention may be implemented in hardware or special purpose circuits, software, logic or any combination thereof.
  • some aspects may be implemented in hardware, while other aspects may be implemented in firmware or software which may be executed by a controller, microprocessor or other computing device, although the invention is not limited thereto.
  • firmware or software which may be executed by a controller, microprocessor or other computing device, although the invention is not limited thereto.
  • While various aspects of the invention may be illustrated and described as block diagrams, flow charts, or using some other pictorial representation, it is well understood that these blocks, apparatus, systems, techniques or methods described herein may be implemented in, as non-limiting examples, hardware, software, firmware, special purpose circuits or logic, general purpose hardware or controller or other computing devices, or some combination thereof.
  • an apparatus comprising: a context determination engine configured to identify at least one apparatus context dependent on at least one received sensor input and at least one received clock input.
  • the apparatus in such embodiments may further comprise a processor configured to determine an operational mode for the apparatus dependent on the apparatus context.
  • the apparatus in some embodiments may further comprise an application processor configured to perform an operation dependent on the apparatus context.
  • the context determination engine of some embodiments may comprise: a probability estimator configured to determine a probability for each apparatus context dependent on the at least one sensor input and the clock input; and a context selector configured to select the at least one apparatus context with the largest probability.
  • the probability estimator also in some embodiments may comprise: a sensor likelihood estimator configured to determine a likelihood for each apparatus context dependent on the at least one sensor input; a time likelihood estimator configured to determine a second likelihood for each apparatus context dependent on the clock input; and a likelihood combiner configured to generate the probability for the each context by combining the likelihood by the second likelihood for each context.
  • the time likelihood estimator in such embodiments may comprise an exponent engine configured to determine the likelihood for each context occurring at the time/date value of the clock input by estimating the exponent of the likelihood for each context occurring at the time/date value of the clock input by a predetermined value.
  • the time likelihood estimator furthermore in at least one of the embodiments may comprise a statistical determiner configured to determine the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input; and dividing the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input by the total number of prior occurrences or distribution of each apparatus context.
  • the time likelihood estimator also in some embodiments may comprise an updater configured to update the number of prior occurrences or distribution of each apparatus using the identified apparatus context dependent at the time/date value of the clock input.
  • the apparatus may in such embodiments comprise a sensor configured to generate the received sensor input, the sensor comprising at least one of: camera sensor; microphone sensor; temperature sensor; humidity sensor; tactile sensor; electromyography sensor; chemical sensor; compass; satellite positioning sensor; gyroscope/accelerometer; antenna sensor; battery sensor; electroencephalograph; pulse monitor; blood pressure sensor; and electrocardiograph.
  • a sensor configured to generate the received sensor input, the sensor comprising at least one of: camera sensor; microphone sensor; temperature sensor; humidity sensor; tactile sensor; electromyography sensor; chemical sensor; compass; satellite positioning sensor; gyroscope/accelerometer; antenna sensor; battery sensor; electroencephalograph; pulse monitor; blood pressure sensor; and electrocardiograph.
  • the apparatus may in some embodiments comprise a clock configured to generate the clock input, wherein the clock input may comprise a time/date value which defines a time period of a day value and a day value.
  • the context determination engine also may further identifying the at least one apparatus context further dependent on a profile value associated with the user.
  • the embodiments of this invention may be implemented by computer software executable by a data processor of the mobile device, such as in the processor entity, or by hardware, or by a combination of software and hardware.
  • any blocks of the logic flow as in the Figures may represent program steps, or interconnected logic circuits, blocks and functions, or a combination of program steps and logic circuits, blocks and functions.
  • the software may be stored on such physical media as memory chips, or memory blocks implemented within the processor, magnetic media such as hard disk or floppy disks, and optical media such as for example DVD and the data variants thereof, CD.
  • at least one embodiment comprises a computer-readable medium encoded with instructions that, when executed by a computer perform: receiving at least one sensor input; receiving a clock input; and identifying at least one apparatus context dependent on the at least one sensor input and the clock input.
  • the memory may be of any type suitable to the local technical environment and may be implemented using any suitable data storage technology, such as semiconductor-based memory devices, magnetic memory devices and systems, optical memory devices and systems, fixed memory and removable memory.
  • the data processors may be of any type suitable to the local technical environment, and may include one or more of general purpose computers, special purpose computers, microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASIC), gate level circuits (such as Field Gate Arrays - FPGA) and processors based on multi-core processor architecture, as non-limiting examples.
  • Embodiments of the inventions may be practiced in various components such as integrated circuit modules.
  • the design of integrated circuits is by and large a highly automated process.
  • Complex and powerful software tools are available for converting a logic level design into a semiconductor circuit design ready to be etched and formed on a semiconductor substrate.
  • Programs such as those provided by Synopsys, Inc. of Mountain View, California and Cadence Design, of San Jose, California automatically route conductors and locate components on a semiconductor chip using well established rules of design as well as libraries of pre-stored design modules.
  • the resultant design in a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a semiconductor fabrication facility or "fab" for fabrication.
  • circuitry refers to all of the following: (a) hardware-only circuit implementations (such as implementations in only analog and/or digital circuitry) and
  • circuits and software and/or firmware
  • combinations of circuits and software such as: (i) to a combination of processor(s) or (ii) to portions of processor(s)/software (including digital signal processor(s)), software, and memory(ies) that work together to cause an apparatus, such as a mobile phone or server, to perform various functions and
  • circuits such as a microprocessor(s) or a portion of a microprocessor(s), that require software or firmware for operation, even if the software or firmware is not physically present.
  • circuitry' applies to all uses of this term in this application, including any claims.
  • the term 'circuitry' would also cover an implementation of merely a processor (or multiple processors) or portion of a processor and its (or their) accompanying software and/or firmware.
  • the term 'circuitry' would also cover, for example and if applicable to the particular claim element, a baseband integrated circuit or applications processor integrated circuit for a mobile phone or similar integrated circuit in server, a cellular network device, or other network device.

Abstract

An apparatus comprising at least one processor and at least one memory including computer program code the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus at least to perform: receiving at least one sensor input; receiving a clock input; and identifying at least one apparatus context dependent on the at least one sensor input and the clock input.

Description

Device and method for context recognition
The present invention relates to context sensing apparatus. The invention further relates to, but is not limited to, context sensing apparatus in portable devices.
Interfaces within computer systems to enable a more natural interaction with the user have been researched and operated for many years. Often the success of computer products is largely due to the user experience rather than the actual technical features of the system. This research is generally referred to as Human Computer Interaction (HCI) and can affect both hardware (such as the type of interface, e.g. touch screen, keyboard, voice, visual display, audio display) and software (such as how to format the display information, designing efficient data input operations using the hardware, etc.). With human-computer interaction (HCI) implementations in computer systems and the move towards more human centred user interface applications, there is a possibility to consider the environment within which the computer is being operated within in order that the computer may display and interact with the user as efficiently as possible. This is particularly important with regards to mobile devices or apparatus where the user typically accesses and manipulates information specific to the location and environmental conditions. For these situations context related information gathered from sensors, networks, the device status, the user profile and other sources can thus enhance the apparatus' usability by allowing this information to adapt applications run by the apparatus to conditions that directly affect the apparatus.
Thus for example research has been carried out to enable apparatus to recognise their location, in other words whether the user is at home, driving a car, eating at a restaurant, or out shopping for groceries based on data collected from the user's mobile device or apparatus. One example of this is "audio" context recognition where the apparatus attempts to determine the physical environment the apparatus is operating by comparing audio input against audio "fingerprints". Another example is "position" or "location" context recognition where position estimates are compared against known location associated contexts, e.g. home, work, cinemas, etc. and the context modification of the phone operation is carried out based on the position context match of the position.
However such context recognition systems are currently flawed. For example sensor information may not always be correct or available, thus for "position" context recognition GPS location based sensor information may be missing if the user operates the apparatus indoors. Furthermore some context values are difficult to distinguish from each other, for example an audio context recogniser can have problems distinguishing between office and home contexts as they may sound similar. Some research has been carried out to improve detection sensitivity for example the use of Hidden Markov Model (HMM) systems to recognise different environmental noise events, however as described above similar sounding environments can produce problems recognising between them. In some research many different types of sensors are used and the information from each sensor is combined in order to improve the context recognition accuracy. However combining multiple sensors can be expensive in terms of processing power and power consumption in operating multiple sensors in parallel. This battery power and processing power cost can therefore be a further problem. This invention proceeds from the consideration that the use of time and calendar information may assist in the determination of context variables to be applied to various applications and thus improve the context determination accuracy within the apparatus. Embodiments of the present invention aim to address the above problem. There is provided according to a first aspect of the invention a method comprising: receiving at least one sensor input; receiving a clock input; and identifying at least one apparatus context dependent on the at least one sensor input and the clock input.
The method may further comprise at least one of: determining an operational mode for an apparatus dependent on the apparatus context; adapting an user interface dependent on the apparatus context; adjusting data provided to at least one application dependent on the apparatus context; filtering data dependent on the apparatus context; selecting a service dependent on the apparatus context; provide implicit interaction with the apparatus dependent on the apparatus context; communicate the context to at least one further apparatus; and performing an operation dependent on the apparatus context. Identifying at least one apparatus context may comprise: determining a probability for each apparatus context dependent on the at least one sensor input and the clock input; and selecting the at least one apparatus context with the largest probability. Determining a probability for each apparatus context dependent on the at least one sensor input and the clock input may comprise: determining a likelihood for each apparatus context dependent on the at least one sensor input; determining a second likelihood for each apparatus context dependent on the clock input; and generating the probability for the each context by combining the likelihood by the second likelihood for each context.
Determining the second likelihood may comprise: generating a likelihood for each context occurring at the time/date value of the clock input; and generating the second likelihood as the exponentiation of the likelihood for each context occurring at the time/date value of the clock input by a predetermined value. Generating the likelihood for each context occurring at the time/date value of the clock input may comprise: determining the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input; and dividing the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input by the total number of prior occurrences or distribution of each apparatus context.
The method may further comprise updating the number of prior occurrences or distribution of each apparatus using the identified apparatus context dependent at the time/date value of the clock input.
The sensor input may comprise at least one of: camera sensor; microphone sensor; temperature sensor; humidity sensor; tactile sensor; electromyography sensor; chemical sensor; compass; satellite positioning sensor; gyroscope/accelerometer; antenna sensor; battery sensor; electroencephalograph; pulse monitor; blood pressure sensor; and electrocardiograph.
The clock input may comprise a time/date value which defines a time period of a day value and a day value.
Identifying the at least one apparatus context dependent on the at least one sensor input and the clock input may further comprise identifying the at least one context dependent on a profile value associated with the user. According to a second aspect of the invention there is provided an apparatus comprising at least one processor and at least one memory including computer program code the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus at least to perform: receiving at least one sensor input; receiving a clock input; and identifying at least one apparatus context dependent on the at least one sensor input and the clock input. The apparatus may be further caused to perform at least one of: determining an operational mode for an apparatus dependent on the apparatus context; adapting an user interface dependent on the apparatus context; adjusting data provided to at least one application dependent on the apparatus context; filtering data dependent on the apparatus context; selecting a service dependent on the apparatus context; provide implicit interaction with the apparatus dependent on the apparatus context; communicate the context to at least one further apparatus; and performing an operation dependent on the apparatus context. The apparatus caused to perform identifying at least one apparatus context may be further caused to perform: determining a probability for each apparatus context dependent on the at least one sensor input and the clock input; and selecting the at least one apparatus context with the largest probability. The apparatus caused to determine a probability for each apparatus context dependent on the at least one sensor input and the clock input may be further caused to perform: determining a likelihood for each apparatus context dependent on the at least one sensor input; determining a second likelihood for each apparatus context dependent on the clock input; and generating the probability for the each context by combining the likelihood by the second likelihood for each context.
The apparatus caused to determine the second likelihood may be further caused to perform: generating a likelihood for each context occurring at the time/date value of the clock input; and generating the second likelihood as the exponentiation of the likelihood for each context occurring at the time/date value of the clock input by a predetermined value.
The apparatus caused to generate the likelihood for each context occurring at the time/date value of the clock input may be further caused to perform: determining the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input; and dividing the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input by the total number of prior occurrences or distribution of each apparatus context.
The apparatus may be further caused to perform updating the number of prior occurrences or distribution of each apparatus using the identified apparatus context dependent at the time/date value of the clock input.
The sensor input may comprise at least one of: camera sensor; microphone sensor; temperature sensor; humidity sensor; tactile sensor; electromyography sensor; chemical sensor; compass; satellite positioning sensor; gyroscope/accelerometer; antenna sensor; battery sensor; electroencephalograph; pulse monitor; blood pressure sensor; and electrocardiograph.
The clock input may comprise a time/date value which defines a time period of a day value and a day value.
The apparatus caused to identify the at least one apparatus context dependent on the at least one sensor input and the clock input may be further caused to perform identifying the at least one context dependent on a profile value associated with the user.
According to a third aspect of the invention there is provided an apparatus comprising: a context determination engine configured to identify at least one apparatus context dependent on at least one received sensor input and at least one received clock input.
The apparatus may further comprise a processor configured to determine an operational mode for the apparatus dependent on the apparatus context. The apparatus may further comprise an application processor configured to perform an operation dependent on the apparatus context. The apparatus may further comprise a processor configured to adapt an user interface dependent on the apparatus context. The apparatus may further comprise a processor configured to adjust data provided to at least one application dependent on the apparatus context.
The apparatus may further comprise a processor configured to filter data dependent on the apparatus context.
The apparatus may further comprise a processor configured to select a service dependent on the apparatus context.
The apparatus may further comprise a processor configured to provide implicit interaction with the apparatus dependent on the apparatus context.
The apparatus may further comprise a processor configured to communicate the context to at least one further apparatus. The context determination engine may comprise: a probability estimator configured to determine a probability for each apparatus context dependent on the at least one sensor input and the clock input; and a context selector configured to select the at least one apparatus context with the largest probability. The probability estimator may comprise: a sensor likelihood estimator configured to determine a likelihood for each apparatus context dependent on the at least one sensor input; a time likelihood estimator configured to determine a second likelihood for each apparatus context dependent on the clock input; and a likelihood combiner configured to generate the probability for the each context by combining the likelihood by the second likelihood for each context. The time likelihood estimator may comprise an exponent engine configured to determine the likelihood for each context occurring at the time/date value of the clock input by estimating the exponent of the likelihood for each context occurring at the time/date value of the clock input by a predetermined value.
The time likelihood estimator may comprise a statistical determiner configured to determine the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input; and dividing the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input by the total number of prior occurrences or distribution of each apparatus context.
The time likelihood estimator may comprise an updater configured to update the number of prior occurrences or distribution of each apparatus using the identified apparatus context dependent at the time/date value of the clock input.
The apparatus may comprise a sensor configured to generate the received sensor input, the sensor comprising at least one of: camera sensor; microphone sensor; temperature sensor; humidity sensor; tactile sensor; electromyography sensor; chemical sensor; compass; satellite positioning sensor; gyroscope/accelerometer; antenna sensor; battery sensor; electroencephalograph; pulse monitor; blood pressure sensor; and electrocardiograph.
The apparatus may comprise a clock configured to generate the clock input, wherein the clock input may comprise a time/date value which defines a time period of a day value and a day value.
The context determination engine may further identifying the at least one apparatus context further dependent on a profile value associated with the user.
According to a fourth aspect of the invention there is provided an apparatus comprising: processing means configured to identify at least one apparatus context dependent on at least one received sensor input and at least one received clock input.
According to a fifth aspect of the invention there is provided a computer-readable medium encoded with instructions that, when executed by a computer perform: receiving at least one sensor input; receiving a clock input; and identifying at least one apparatus context dependent on the at least one sensor input and the clock input. An electronic device may comprise apparatus as described above. A chipset may comprise apparatus as described above. Brief Description of Drawings
For better understanding of the present invention, reference will now be made by way of example to the accompanying drawings in which:
Figure 1 shows schematically an electronic device employing embodiments of the application;
Figure 2 shows schematically the electronic device shown in Figure 1 in further detail;
Figure 3 shows schematically a context selection engine shown in Figure 2 according to some embodiments of the application;
Figure 4 shows schematically a time conditional processor shown in Figure 3 according to some embodiments of the application;
Figure 5 shows schematically a probability distribution of possible example context values against time;
Figure 6 shows schematically a flow chart illustrating the operation of the context selection engine according to some embodiments of the application;
Figure 7 shows schematically a flow chart illustrating the operation of the time conditional processor with respect to prior probability value maintenance according to some embodiments of the application; Figure 8 shows schematically a flow chart illustrating the operation for generating initial prior probability values according to some embodiments of the application; and
Figure 9 shows schematically a flow chart illustrating the operation for generating updated prior probability values according to some embodiments of the application.
The following describes apparatus and methods for the provision of enhancing context determination operations. In this regard reference is first made to Figure 1 which shows a schematic block diagram of an exemplary electronic device 10 or apparatus, which may incorporate enhanced context determination components and methods. These embodiments of the application use the routine of the user to assist in determining context by allowing sensor based context determination factors to be weighted based on experienced contexts at past times.
The electronic device 10 may for example be a mobile terminal or user equipment for a wireless communication system. In other embodiments the electronic device may be any audio player, such as an mp3 player or media player, equipped with suitable microphone array (sensors) as described below. In other embodiments, the electronic device may be a desktop computer, laptop computer, game device, digital camera/camcorder, audio/video player, television device, radio receiver, digital video recorder, positioning device, wrist watch, portable digital assistant (PDA), any combination thereof, and/or the like, equipped with suitable microphone and/or other sensors as described below.
The electronic device 10 in some embodiments comprises a processor 21 . The processor 21 may be configured to execute various program codes. The implemented program codes may comprise enhanced context determination code. The implemented program codes 23 may be stored for example in the memory 22 for retrieval by the processor 21 whenever needed. The memory 22 could further provide a section 24 for storing data, for example sensor data or prior context determination data that has been processed in accordance with the embodiments.
The context determination enhancement code may in embodiments be implemented at least partially in hardware or firmware.
The processor 21 may in some embodiments be linked via a digital-to-analogue converter (DAC) 32 to a speaker 33. However the operation of the digital-to- analogue converter (DAC) 32 and speaker 33 in such devices is generally known and will not be described further.
The apparatus 10 in some embodiments comprises a user interface 15, which is connected to the processor 21 and enables a user to input commands to the apparatus 10, for example via a keypad, and/or to obtain information from the apparatus 10, for example via a display (not shown). It would be understood that the user interface may furthermore in some embodiments be any suitable combination of input and display technology, for example a touch screen display suitable for both receiving inputs from the user and displaying information to the user.
The apparatus 10 in some embodiments comprises a transceiver, which is also connected to the processor 21 and is configured to enable communication with other electronic devices, for example via a wireless communication network. Furthermore the electronic device may comprise sensors or a sensor bank 16. The sensor bank 16 receives information about the environment in which the electronic device 10 is operating and passes this information to the processor 21 in order to assist the processor in determining the context, or environmental conditions of the apparatus and in particular to affect the processor 21 in performing applications.
The sensor bank 16 may comprise at least one of the following set of sensors. The apparatus 10 and the sensor bank in particular in some embodiments further comprises at least one microphone in a microphone array 1 1 for inputting or capturing acoustic waves and outputting audio or speech signals to be processed according to some embodiments of the application.
The apparatus 10 in such embodiments may further comprise an analogue-to- digital converter (ADC) 14 configured to convert the input analogue audio signals from the microphone array 1 1 into digital audio signals and provide the digital audio signals to the processor 2 . These audio or speech signals may according to some embodiments be transmitted to other electronic devices via the transceiver 13 or may be stored in the data section 24 of the memory 22 for later processing.
The sensor bank 16 may in some embodiments comprise a camera module. The camera module may in some embodiments comprise at least one camera having a lens for focusing an image on to a digital image capture means such as a charged coupled device (CCD). In other embodiments the digital image capture means may be any suitable image capturing device such as complementary metal oxide semiconductor (CMOS) image sensor. The camera module further comprises in some embodiments a flash lamp for illuminating an object before capturing an image of the object. The flash lamp is in such embodiments linked to a camera processor for controlling the operation of the flash lamp. In other embodiments the camera may be configured to perform infra-red and near infra-red sensing for low ambient light sensing. The at least one camera may be also linked to the camera processor for processing signals received from the at least one camera before passing the processed image to the processor. The camera processor may be linked to a local camera memory which may store program codes for the camera processor to execute when capturing an image. Furthermore the local camera memory may be used in some embodiments as a buffer for storing the captured image before and during local processing. In some embodiments the camera processor and the camera memory are implemented within the processor 21 and memory 22 respectively. In some embodiments for example, the camera module may comprise more than one camera capturing images at the same time at slightly different positions or orientations. In some embodiments the sensor bank 16 comprises a position/orientation sensor. The orientation sensor in some embodiments may be implemented by a digital compass or solid state compass configured to determine the electronic devices orientation with respect to the horizontal axis. In some embodiments the position/orientation sensor may be a gravity sensor configured to output the electronic device's orientation with respect to the vertical axis. The gravity sensor for example may be implemented as an array of mercury switches set at various angles to the vertical with the output of the switches indicating the angle of the electronic device with respect to the vertical axis. In some embodiments the position/orientation sensor comprises a satellite position system such as a global positioning system (GPS) whereby a receiver is able to estimate the position of the user from receiving timing data from orbiting satellites. Furthermore in some embodiments the GPS information may be used to derive orientation and movement data by comparing the estimated position of the receiver at two time instances.
In some embodiments the sensor bank 16 further comprises a motion sensor in the form of a step counter. A step counter may in some embodiments detect the motion of the user as they rhythmically move up and down as they walk. The periodicity of the steps may themselves be used to produce an estimate of the speed of motion of the user in some embodiments. In some embodiments the step counter may be implemented as a micro-electromechanical machine systems (MEMS) sensor or gravity sensor. In some further embodiments of the application, the sensor bank 16 may comprises at least one accelerometer configured to determine any change in motion of the apparatus. The change in motion/position/orientation may be an absolute change where the apparatus changes in motion/position/orientation, or a relative change where the apparatus 10 changes in motion/position/orientation with respect to a localised object, for example relative to the user of the apparatus.
In some other embodiments, the position/orientation sensor may comprise a capacitive sensor capable of determining an approximate distance from the device to the user's head when the user is operating the electronic device. It would be appreciated that a proximity position/orientation sensor may in some other embodiments be implemented using a resistive sensor configuration, an optical sensor, or any other suitable sensor configured to determining the proximity of the user to the apparatus.
In some other embodiments the sensor input may be received from any one of a temperature sensor; a humidity sensor; a tactile sensor; a electromyography sensor; a chemical sensor; a compass; an antenna sensor; a battery sensor; an electroencephalograph; a pulse monitor; a blood pressure sensor; and an electrocardiograph. It is to be understood again that the structure of the apparatus 10 could be supplemented and varied in many ways.
It would be appreciated that the schematic structures described in Figures 2 to 4 and the method steps in Figure 6 and 9 represent only a part of the operation of an apparatus as shown in Figure 1 .
With respect to Figure 2 and Figure 6, a schematic view of the components implemented in embodiments of the application with regards to context determination and application are shown in further detail. As shown in Figure 2 the sensors 16 pass data to the context determination engine 103. Furthermore the microphone array and analogue-to-digital converter 1 1 , 14 furthermore pass audio data configured in a suitable form to the context determination engine 103. Furthermore the apparatus comprises a clock/calendar processor 101 which in some embodiments is part of the processor 21 , and in these embodiments maintains calendar and clock information or data. The clock/calendar data in these embodiments is passed to the context determination engine 103.
The operation of receiving the sensor/audio/time data is shown in Figure 6 by step 501 . The context determination engine 103 is configured to receive the sensor/audio/time and calendar information and process this information to generate context probabilities and then determine or select a context based on the largest probability. The context determination engine 103 is described with respect to being a maximum likelihood selector however it would be appreciated that any suitable probability based process could be used such as Hidden Markov Models (HMM), nearest neighbour selection, artificial neural network (ANN) or any suitable pattern recognition approach. However, in order to simplify understanding of the application the context determination engine 103 is described with regards to probability and maximum likelihood selection operations.
The context determination engine 103 is described in further detail with respect to Figure 3. The context determination engine 103 comprises a context recognition processor 201 . The context recognition processor 201 receives the sensor and audio data and outputs a series of probability or likelihood values for each known context. Mathematically the likelihood values L( can be represented as:
A = p(C,|0), i = l ... N, where C} to CN represents the context, and O is the set of observations coming from the sensors and/or audio input. For example in a context determination system using audio sensors i.e. processed audio signals, the observation set may comprise a sequence of feature vectors of mel-frequency cepstral coefficients and their first and second order time derivatives.
The output of the context probabilities may be carried out using any suitable pattern or probability determining process. For example as described in "Audio- Based Context Recognition" by Eronen et al as published in IEEE Transactions on Audio, Speech and Language Processing, Volume 14, No.1 , January 2006, pages 321 to 329 a Hidden Markov Model (HMM) is used following feature extraction. In such system where audio sensor data is used as an input to the context recognition processor 201 , the audio signal can use a short analysis frame typically with length 30 milliseconds with 15 millisecond overlap, a hamming window function and extracted features including any of a zero crossing rate, short time average energy, mel-frequency cepstral coefficients, a first derivative of the mel-frequency cepstral coefficients, a second derivative of the mel-frequency cepstral coefficients, band energy, spectral centroid, bandwidth, spectral roll off, spectral flux, linear prediction coefficients, and linear prediction cepstral coefficients.
The HMM parameters may be obtained e.g. with an Expectation Maximization (EM) algorithm, which may be used to train a HMM for each context in an off-line training stage. The training stage uses a training set, which comprises at least one recording from each context. Features are extracted from the training recordings of each context, and then the EM algorithm is used to iteratively find parameters for the context HMMs. It is noted that this training stage can be performed in another device such as a server computer or a personal computer, before deploying the system to the target device. The parameters of the HMMs, including e.g. the transition probability matrix, initial probabilities, and the parameters of the state densities may then be stored at the context recognition processor 201 . In one embodiment, the state densities are Gaussian Mixture Models (GMM), and the state density parameters comprise the weights, means, and covariance matrices for each state density. When the context recognition processor 201 needs to produce probabilities for each context, the likelihood of each context HMM having produced the input feature sequence is evaluated. This likelihood evaluation can be done e.g. using Viterbi decoding or the forward-backward procedure.
Furthermore for a simplified example the known context sets are related to the tasks carried out by the user. In this simple example there are three known context set members, work, home and shopping. However it would be appreciated that although the following example describes one context with three members there may be many different contexts to be determined each of which in some embodiments comprises at least one context set member. For example possible context types and members include but not exclusively include examples such as: Environment:Sound:lntensity={Silent, Moderate, Loud},
Environment:Light:lntensity={Dark, Normal, Bright}, and
Environment:Light:Type={Artificial, Natural}. The operation of generating context probabilities dependent on the sensor/audio data is shown in Figure 6 by step 503.
Furthermore the context selection engine comprises a time conditional processor 203. The time conditional processor 203 receives the clock/calendar data from the clock/calendar 101 and comprises a series of time-conditional probabilities for each known context. These probabilities may be represented mathematically as:
Figure imgf000019_0001
where q represents the y'th context, is the current time index, M is the total number of time periods and N is the number of contexts. The time indices for example can correspond to time-intervals of a 24-hour day. For example, a day can be split into 1 hour-long intervals, in which case the value for M would be 24 and t4 correspond to times between 3:00 am and 3:59 am. Furthermore, in some embodiments separate probability sets BtJ are used for weekdays as opposed to weekends or days of the weekend. In such embodiments the probability for a user to be at home at 1 1 :00 am might be higher on a Saturday than on a weekday. Alternatively the context selection engine may comprise a series of probability density functions over time for the known context set members. These probability density functions can be represented mathematically as:
Figure imgf000020_0001
where Q represents the context j and t refers to time.
These probability density functions may be continuous functions (for example, a mixture of Gaussians) of time or approximated by discrete probabilities (normalized histograms, for example). In the case of discrete probabilities the mathematical representation is:
Figure imgf000020_0002
where refers to the z'th time period.
Furthermore, the time conditional processor can be configured to generate weighting values W} for the set of known contexts and for the current time. These weighting values W) are obtained from the probability density functions B or Ay b choosing the likelihood values for the known contexts and the current time. Mathematically this can be expressed as follows:
Wj = By, i = current time, j = l ... N or
Wj = A,y, ί ~ current time, j = \ ... N where N is the number of contexts and ί is the time period corresponding to the current time. The time conditional processor 203 may output these weighting values to the modified context manager 205. The time conditional processor 203 may in some embodiments generate these weighting values when needed or in some embodiments access the weighting values by using a look-up table which can be maintained in memory 22.
In addition/alternatively to storing the probabilities, it is possible to keep a table (matrix) of counts of how many times a time-context pair has been observed in the memory. The time conditional processor can compute the values By or Dy from the stored counts when needed. The computation may be done as follows:
5V = C(Cy,i/) /∑j=l ..MC(Cy,i/) and
DiJ = C(Cj,ti) /∑i^C(Cj,tl), where C(Cj, ) is the number of times (count) context j and time i have occurred together. Storing the counts (C(Cj,t)) has the benefit of simplifying the adaptation of the system.
The operation of generating and/or maintaining these weighting values in some embodiments is described in further detail later in the application. The generation/recalling of the context weighting values dependent on the time data is shown in Figure 6 by step 505.
The context selection engine 103 further comprises a modified context manager 205. The modified context manager 205 receives the context recognition processor context likelihoods Lt which are dependent on the sensor/audio data and the context weighting values Wt dependent on the time data from the time conditional processor 203 and generates a modified list of context probabilities At. The modified context probabilities At may for example be generated by the modified context manager 205 by multiplying each context likelihood I,· with the weighting values Wj. This for example may be represented mathematically as:
A, = LtWi = p(Ci\0)Wi
The modified context probabilities could also be generated by summing the logarithm of the context likelihood with a logarithm of the weighting values. The output modified context likelihood are passed then from the modified context manager 205 to the context selector 207.The operation of combining the context probabilities is shown in Figure 6 by step 507.
The context determination engine 103 in some embodiments comprises a context selector 207. The context selector 207 in some embodiments selects the context with the highest probability and outputs the context selected to the application processor 105.
The step of selecting the highest probability context is shown in Figure 6 by step 509.
The application processor 105 receives the selected information and then may apply the context information to the application in order to modify the application output. For example the application may select how to notify the user of the apparatus when receiving a call. Using the context values example described above the context determination engine 103 is configured to output either the value of home, work, shopping, which represents whether the user is at home, at work, or shopping and thus the application processor can select relevant vibration or audio notification options. For example when detecting the context at home, the user may be notified using an audio notification, when at work only a vibration but no audio notification and when shopping notify the user using a loud audio notification. In some embodiments the determination of the context may allow an adaption of an user interface dependent on the apparatus context. For example, certain icons on the user interface considered relevant to the current context might be made visible or more prominent by the apparatus. In other examples options such as backlighting levels or text sizing on the display may be adjusted according to the determined apparatus context.
Furthermore in some embodiments the determination of the context enables the processor to adjust a set of data provided to at least one application. For example, the apparatus might provide the current context to a navigation application such that it can adapt its operation accordingly. For example, the context may indicate that the user is currently cycling and the navigation application might thus provide routes suitable for cycling when it receives the context information. The determination of the context further in some embodiments allows a processor to filter information or data dependent on the context or use the context as an additional search criteria. For example, when a user is making Web searches on a certain location or environment, the results may be ranked accordingly to their relevance to the current context.
In some embodiments the determination also can permit a processor discover at least one service dependent on the context. For example, the context may be used as a criterion when discovering Web services, to find a service which best matches the user's current context.
Furthermore in some embodiments the determination of the context enables the processor to provide implicit interaction with the device dependent on the context. For example, the device may automatically start an application dependent on the context. For example, the device may notice based on the context information that the user starts running and it may thus start an exercise monitoring application such as the Sports Tracker automatically. Also in some embodiments the determination of the context enables the processor to communicate the context information to at least one other apparatus. For example, devices in a smart environment may exchange context information in order to adjust their operation accordingly.
The application of the detected context to the application operation is shown in Figure 6 by step 51 1 .
The context selector 207 may furthermore be connected in such a way to feed back the selected context to the time conditioner processor 203 in order to allow the time conditional processor to "learn" in some embodiments.
With respect to Figure 4 and Figures 7, 8 and 9 the time conditional processor 203 and the operation of the time conditional processor 203 with respect to some embodiments which are configured to generate and update the prior probabilities is shown in further detail.
With respect to Figure 4 the time conditional processor 203 is shown comprising a prior probability generator/buffer 303.
The prior probability generator/buffer 303 is configured to receive a clock/calendar data input and output weighting values Wi reflecting the probabilities of each known context Ct dependent on the time/calendar data input. Thus in some embodiments the prior probability generator/buffer 303 comprises a look-up table or access to a memory such as memory 22 within which a series of prior probabilities are stored for each known context dependent on the time/calendar value.
For example, as shown in Figure 5, a graph shows probabilities of each example context (home, work, or shopping) throughout the day. Thus for example when the clock input is at 9:25am the operation of generating context probabilities dependent on the time data would cause the time conditional processor 203 and in these embodiments the prior probability generator 303 to output three weighting values, the probability of being at work P(work|9:25) = 75% or 0.75; the probability of being at home P(home|9:25) = 15% or 0.15, and the probability of shopping P(shop |9:25) = 10% or 0.1 . It would be understood that in some embodiments the probability density function Dy may be represented in a similar graph format showing the probability density function rather than the By probabilities described above.
This for example is the operation of generating the prior probability or weighting values as described above where the context probabilities and on time data operation is carried out by the time conditional processor 203.
However it would be appreciated that the prior probabilities used to generate the weighting values in some embodiments may be configured to be adjustable, in other words to obtain a more optimal performance the prior probabilities are adjusted to suit the profile of the user.
In these embodiments and as shown in Figure 4 the time conditional processor 203 comprises a profile selector 30 . The profile selector 301 is configured to generate a profile or receive a profile selection, for example the user may select from the user interface an option indicating what type of activities the user may perform during the day and through the week. In other words for the examples described above for the contexts of work, home, and shopping the user may select whether or not they are working during the day, working a normal Monday-to-Friday job, working at night, or on shift operation. The profile selector 301 may output a selected profile indicator to the prior probability generator/buffer 303.
In some embodiments the profile selector 301 may itself provide a series of prior probabilities, in other words an initial guess of the time dependent prior probabilities for different user types (such as student, pensioner, etc.). The profile selector 301 may in these embodiments then prompt the user to select the most fitting user type and thus provide some initial values for the prior probabilities. This operation may for example occur at the shop when the user buys the apparatus when the user first operates the apparatus, or when the user logs onto a central server and registers the apparatus, for example when the operator registers the device at the Ovi service. In further embodiments when registering the device the user may be presented not simply with a user type but a set of questions to determine a closest behavioural category. In such embodiments different behavioural categories can be created via a central server based on customer segmentation or automatically by monitoring different customer behaviour patterns. In some embodiments the prior probabilities may also be initially generated automatically based on user data available from the user's own central service account such ovi.com and based on the phone model the user is using.
The operation of selecting the profile or receiving the profile information is shown in Figure 7 by step 601.
The prior probability generator/buffer 303 in some embodiments rather than receiving a predetermined template profile probability generates an initial set of prior probabilities dependent on the profile selected. In some embodiments where the profile is being reselected the prior probability generator/buffer may simply receive or recall from memory a previously calculated series of prior probabilities.
Furthermore in some embodiments the prior probability generator/buffer 303 may request that an external server (with much greater user information storage capacity and processing capability) generates the initial prior probability values.
The generation of the initial prior probabilities/or recovering the stored profile prior probabilities is shown in Figure 7 by step 603.
With respect to Figure 8, a flow diagram showing operations for generating the prior probabilities for the first time for a range of profiles for some embodiments is shown in further detail. In this example the prior probability generator 303 generates the probabilities however it would be understood as described above that these operations may be carried out at least partially by systems external to the apparatus for example in a central server and the results passed to the prior probability generator/buffer, for example via the transceiver.
The prior probability generator/buffer 303 may initialise a first or outer loop, where the loop variable represents each of the profile values. In the example shown in Figure 8 there are N different profiles (1 to N). The profiles may represent the status or category of the user, for example office worker, shift worker, home keeper, unemployed or in some embodiments represent periods of time, such as weekday, weekend day, Saturday, Sunday, Winter, Summer, etc. In the profile loop for each profile value the following operation steps are all repeated. The operation of setting up the outer "profile" loop is shown in Figure 8 by step 701.
The prior probability generator/buffer 303 in some embodiments initialises a second loop internal to the first loop where the loop variable is a time variable dividing the time period over which the prior probabilities are calculated into a series of periods M (1 to M). For example the time period may be a day and the division may be an hour or a number of minutes (e.g. 15min divisions) depending on how detailed the weighting values variability is required.
The operation of setting up the second "time" loop is shown in Figure 8 by step 703.
The prior probability generator/buffer 303 may then calculate the total training sequence occurrences, in other words may calculate how many pieces of information concerning the context variables it has stored. The total training sequences with respect to that particular profile and time division instance is mathematically represented by C(tot). For example C(tot) may represent the total number of responses to the question of where the user is at 9:25am. The calculation of the total training sequence occurrences is shown in Figure 8 by step 705. Furthermore the prior probability generator/buffer 303 may then initialize a third or inner loop wherein the third or inner loop variable is the context variable. For example with respect to the examples shown in Figure 5 there are three context variables (home, work and shopping). However it would be appreciated that there may be more or fewer context variables.
The starting of the third "context" loop is shown in Figure 8 by step 707.
The prior probability generator/buffer 303 may then calculate the number of training sequences occurring for the particular context at that particular time for that particular profile, this may be represented mathematically by the value C( ). For the examples described above the total number of responses to the question of where the user is at 9:25am which are home is C(home).
The calculation of the number of training sequence occurrences at that context at that time and for that profile is shown in Figure 8 by step 709.
The prior probability generator 303 may then calculate a probability for the particular instance of context and that time and for that profile by dividing the number of training sequence occurrences over the total number of occurrences for that time and profile. In other words the prior probability generator 303 may represent the probability mathematically by:
P(C,.) =^> ,
' C(tot) The calculation of the probability for the particular context instance at that time and for that profile value is shown in Figure 8 by step 71 1. The prior probability generator/buffer 303 may then repeat the context loop. The operation of repeating the context loop is shown in step 713 of Figure 8. Furthermore once all the probabilities for contexts for that particular time instant has been carried out, the prior probability generator/buffer in these embodiments move on to the next time division. The next time division operation is shown in Figure 8 by step 715. Furthermore the prior probability generator/buffer 303 may once calculating for all of the time division for the particular profile value then carry out the next profile loop. The operation of the next profile value loop is shown in Figure 8 by the step 717. In such a manner in some embodiments the prior probability generator/buffer may calculate a whole series of initial prior probabilities for each profile.
It would be appreciated that in such embodiments where the probability distribution function is used then a similar set of processes may be performed by a prior probability distribution processor calculating the probability distributions based on prior event instances or distributions.
Furthermore in some embodiments not only can the prior probabilities be adapted according to profile but they may be adapted according to further context determination results. In such embodiments the time conditional processor may comprise a prior probability adaptor 305. In such embodiments the prior probabilities for a particular time value (such as the current time/calendar value or the determined result time/calendar value) may be passed to the prior probability adaptor 305.
In such embodiments prior probability adaptor 305 is configured to continually update the prior probability adapter dependent on information passed from the context selector 207 and the clock/calendar in order that the time conditional processor can adapt to the user's changing and evolving lifestyle. For example the above initial generation operations may prove to be out of date and thus have errors where the user adjusts their lifestyle such that their working shifts or shopping trips occur later or earlier in the day or change throughout the year.
The prior probability adapter 305 is configured in such embodiments to detect when it receives a valid context selection output to attempt to generate adapted prior probabilities. In some embodiments the triggering of the prior probability adapter 305 to generate or store new profile probabilities occurs when a new context output is output with a sufficiently high confidence level. In some embodiments a sufficiently high confidence level may be determined when the probability (or probability density) of the selected event is much greater than the others. However in some embodiments the user may be requested to review the context output and a high confidence level established when the user agrees with the context output. In some other embodiments the new context generation adaption is carried out whenever a new context output has been detected. For example the time conditional processor 203 may detect a new context output as shown in the operation step 605 in Figure 7. In such embodiments when a new context output is detected the generation/storage of new profile prior probabilities by the prior probability adapter 305 as described with regards to Figure 9 may be carried out.
With respect to Figure 9 the operations carried out by the generation of adapted probability values for prior probabilities is shown in further detail. The prior probability adapter 305 first adapts the probabilities for the determined context value at that particular time and for that particular profile value by recalculating the probabilities BUj or DtJ. The recalculation is done by incrementing the appropriate element in the stored table of counts by one and recalculating the B j or y values. For example, if we adapt the system with the input context "car" and time 10:30, we would add one to the corresponding count C(Ccar, tw-u) in the count table when 1 hour time periods are for example used. In other words this incrementing of the counts for the probability embodiments may be represented mathematically by:
C(C,) + 1 _ P(Ci) + l/C(tot)
C(tot) + \ ~ \ + \I C(tot) where r is the determined result context.
The step of calculating (for the detected result context), the new probability is shown in Figure 9 by step 801 .
Similarly the prior probability adapter 305 in some embodiments can calculate the prior probabilities for the non determined context outputs. In other words the probabilities are recalculated by dividing the number of instances (which remains the same) of the contexts at that time and for that profile by the total number of contexts (which has increased by 1 ). This may be represented mathematically by: PeA (C^)) = c C (to C t)'+> l = l + P l l^c{toty il rr -
In some embodiments the value that the table of counts is incremented with can be a number other than one. For example in some embodiments the value may be changed or varied depending on how greatly an adaptation weight is required. For example in some embodiments the prior probability adapter may make the value large in order to make a rapid adjustment or adaptation variability or make small when a slower adaptation rate is desired. For example, fast adaptation may be desirable when the system is taken into use and it needs to learn the behaviour of the user fast. As another example, stronger adaptation may be performed when explicit confirmation on the correct context is received from the user, whereas weaker adaptation may be performed when the adaptation is performed in an unsupervised manner, without any input from the user. As a yet another example, if the combined likelihoods are smaller than a predetermined threshold for all contexts, it may be determined that the user has changed his behaviour and faster adaptation is desired. As a yet another example, when the user of the device changes a faster adaptation rate is desirable.
In such embodiments the prior probability adaptor can both adapt the probabilities to follow the user's behaviour but also be able to change the rate of adaptation.
In some embodiments several prior probability sets could be used by the system. The appropriate set may be selected or chosen based on which prior set best matches the user activity for the previous number of hours. Furthermore although we have described the effect of the weighting values as being linear, in some embodiments the weighting values itself can be weighted by a value (a) where a is a weighting which affects the effect of the temporal weighting probabilities on the context recognition result probabilities. In such embodiments the weight a may define the number of times by which the weighting is multiplied by itself so that the weighting value is raised when the context with the highest prior probability matches with the recognition result (in other words a is reduced in value) and lowered when they do not match (in other words the value of a is increased). In such embodiments there is an advantage by giving more or less weight to the prior probabilities based on how predictable the user is. In some embodiments user input may be used in the form of a review of the accuracy of prior event context outputs in order to set or adjust the weight value.
Thus in such embodiments the recognition accuracy of context recognition systems is improved.
As such in summary the application assists in context recognition by making certain contexts more likely to be detected based on the users routine and so is based on the current time of the day, or time of the week for instance. In other words the prior probabilities may be adaptable to better suit the user's activities. Also the embodiments of the application may allow a method for the recognition of context based on time based prior probabilities, a method for adapting time based prior probabilities to user activity patterns, a method for providing the context recognition system an initial, predefined prior probability set, multiple prior probabilities for a single user and also adaptable prior probability of weighting.
Thus user equipment may comprise an audio processor such as those described in embodiments of the invention above.
It shall be appreciated that the term electronic device and user equipment is intended to cover any suitable type of wireless user equipment, such as mobile telephones, portable data processing devices or portable web browsers.
In general, the various embodiments of the invention may be implemented in hardware or special purpose circuits, software, logic or any combination thereof. For example, some aspects may be implemented in hardware, while other aspects may be implemented in firmware or software which may be executed by a controller, microprocessor or other computing device, although the invention is not limited thereto. While various aspects of the invention may be illustrated and described as block diagrams, flow charts, or using some other pictorial representation, it is well understood that these blocks, apparatus, systems, techniques or methods described herein may be implemented in, as non-limiting examples, hardware, software, firmware, special purpose circuits or logic, general purpose hardware or controller or other computing devices, or some combination thereof.
Therefore in summary there is in at least one embodiment an apparatus comprising: a context determination engine configured to identify at least one apparatus context dependent on at least one received sensor input and at least one received clock input. The apparatus in such embodiments may further comprise a processor configured to determine an operational mode for the apparatus dependent on the apparatus context.
The apparatus in some embodiments may further comprise an application processor configured to perform an operation dependent on the apparatus context.
The context determination engine of some embodiments may comprise: a probability estimator configured to determine a probability for each apparatus context dependent on the at least one sensor input and the clock input; and a context selector configured to select the at least one apparatus context with the largest probability. The probability estimator also in some embodiments may comprise: a sensor likelihood estimator configured to determine a likelihood for each apparatus context dependent on the at least one sensor input; a time likelihood estimator configured to determine a second likelihood for each apparatus context dependent on the clock input; and a likelihood combiner configured to generate the probability for the each context by combining the likelihood by the second likelihood for each context.
The time likelihood estimator in such embodiments may comprise an exponent engine configured to determine the likelihood for each context occurring at the time/date value of the clock input by estimating the exponent of the likelihood for each context occurring at the time/date value of the clock input by a predetermined value.
The time likelihood estimator furthermore in at least one of the embodiments may comprise a statistical determiner configured to determine the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input; and dividing the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input by the total number of prior occurrences or distribution of each apparatus context.
The time likelihood estimator also in some embodiments may comprise an updater configured to update the number of prior occurrences or distribution of each apparatus using the identified apparatus context dependent at the time/date value of the clock input.
The apparatus may in such embodiments comprise a sensor configured to generate the received sensor input, the sensor comprising at least one of: camera sensor; microphone sensor; temperature sensor; humidity sensor; tactile sensor; electromyography sensor; chemical sensor; compass; satellite positioning sensor; gyroscope/accelerometer; antenna sensor; battery sensor; electroencephalograph; pulse monitor; blood pressure sensor; and electrocardiograph.
The apparatus may in some embodiments comprise a clock configured to generate the clock input, wherein the clock input may comprise a time/date value which defines a time period of a day value and a day value. The context determination engine also may further identifying the at least one apparatus context further dependent on a profile value associated with the user.
The embodiments of this invention may be implemented by computer software executable by a data processor of the mobile device, such as in the processor entity, or by hardware, or by a combination of software and hardware. Further in this regard it should be noted that any blocks of the logic flow as in the Figures may represent program steps, or interconnected logic circuits, blocks and functions, or a combination of program steps and logic circuits, blocks and functions. The software may be stored on such physical media as memory chips, or memory blocks implemented within the processor, magnetic media such as hard disk or floppy disks, and optical media such as for example DVD and the data variants thereof, CD. Thus at least one embodiment comprises a computer-readable medium encoded with instructions that, when executed by a computer perform: receiving at least one sensor input; receiving a clock input; and identifying at least one apparatus context dependent on the at least one sensor input and the clock input.
The memory may be of any type suitable to the local technical environment and may be implemented using any suitable data storage technology, such as semiconductor-based memory devices, magnetic memory devices and systems, optical memory devices and systems, fixed memory and removable memory. The data processors may be of any type suitable to the local technical environment, and may include one or more of general purpose computers, special purpose computers, microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASIC), gate level circuits (such as Field Gate Arrays - FPGA) and processors based on multi-core processor architecture, as non-limiting examples.
Embodiments of the inventions may be practiced in various components such as integrated circuit modules. The design of integrated circuits is by and large a highly automated process. Complex and powerful software tools are available for converting a logic level design into a semiconductor circuit design ready to be etched and formed on a semiconductor substrate.
Programs, such as those provided by Synopsys, Inc. of Mountain View, California and Cadence Design, of San Jose, California automatically route conductors and locate components on a semiconductor chip using well established rules of design as well as libraries of pre-stored design modules. Once the design for a semiconductor circuit has been completed, the resultant design, in a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a semiconductor fabrication facility or "fab" for fabrication.
As used in this application, the term 'circuitry' refers to all of the following: (a) hardware-only circuit implementations (such as implementations in only analog and/or digital circuitry) and
(b) to combinations of circuits and software (and/or firmware), such as: (i) to a combination of processor(s) or (ii) to portions of processor(s)/software (including digital signal processor(s)), software, and memory(ies) that work together to cause an apparatus, such as a mobile phone or server, to perform various functions and
(c) to circuits, such as a microprocessor(s) or a portion of a microprocessor(s), that require software or firmware for operation, even if the software or firmware is not physically present.
This definition of 'circuitry' applies to all uses of this term in this application, including any claims. As a further example, as used in this application, the term 'circuitry' would also cover an implementation of merely a processor (or multiple processors) or portion of a processor and its (or their) accompanying software and/or firmware. The term 'circuitry' would also cover, for example and if applicable to the particular claim element, a baseband integrated circuit or applications processor integrated circuit for a mobile phone or similar integrated circuit in server, a cellular network device, or other network device. The foregoing description has provided by way of exemplary and non-limiting examples a full and informative description of the exemplary embodiment of this invention. However, various modifications and adaptations may become apparent to those skilled in the relevant arts in view of the foregoing description, when read in conjunction with the accompanying drawings and the appended claims. However, all such and similar modifications of the teachings of this invention will still fall within the scope of this invention as defined in the appended claims.

Claims

CLAIMS:
1 . A method comprising:
receiving at least one sensor input;
receiving a clock input; and
identifying at least one apparatus context dependent on the at least one sensor input and the clock input.
2. The method as claimed in claim 1 , further comprising at least one of:
determining an operational mode for an apparatus dependent on the apparatus context;
adapting an user interface dependent on the apparatus context;
adjusting data provided to at least one application dependent on the apparatus context;
filtering data dependent on the apparatus context;
selecting a service dependent on the apparatus context;
provide implicit interaction with the apparatus dependent on the apparatus context;
communicate the context to at least one further apparatus; and
performing an operation dependent on the apparatus context.
3. The method as claimed in claims 1 and 2, wherein identifying at least one apparatus context comprises:
determining a probability for each apparatus context dependent on the at least one sensor input and the clock input; and
selecting the at least one apparatus context with the largest probability.
4. The method as claimed in claim 3, wherein determining a probability for each apparatus context dependent on the at least one sensor input and the clock input comprises: determining a likelihood for each apparatus context dependent on the at least one sensor input;
determining a second likelihood for each apparatus context dependent on the clock input; and
generating the probability for the each context by combining the likelihood by the second likelihood for each context.
5. The method as claimed in claim 4, where determining the second likelihood comprises:
generating a likelihood for each context occurring at the time/date value of the clock input; and
generating the second likelihood as the exponentiation of the likelihood for each context occurring at the time/date value of the clock input by a predetermined value.
6. The method as claimed in claim 5, wherein generating the likelihood for each context occurring at the time/date value of the clock input comprises:
determining the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input; and
dividing the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input by the total number of prior occurrences or distribution of each apparatus context.
7. The method as claimed in claim 6, further comprising updating the number of prior occurrences or distribution of each apparatus using the identified apparatus context dependent at the time/date value of the clock input.
8. The method as claimed in claims 1 to 7 wherein the sensor input comprises at least one of:
camera sensor;
microphone sensor;
temperature sensor; humidity sensor;
tactile sensor;
electromyography sensor;
chemical sensor;
compass;
satellite positioning sensor;
gyroscope/accelerometer;
antenna sensor;
battery sensor;
electroencephalograph;
pulse monitor;
blood pressure sensor; and
electrocardiograph.
9. The method as claimed in claims 1 to 8, wherein the clock input comprises a time/date value which defines a time period of a day value and a day value.
10. The method as claimed in claims 1 to 9, wherein identifying the at least one apparatus context dependent on the at least one sensor input and the clock input further comprises identifying the at least one context dependent on a profile value associated with the user.
1 1 . An apparatus comprising at least one processor and at least one memory including computer program code the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus at least to perform:
receiving at least one sensor input;
receiving a clock input; and
identifying at least one apparatus context dependent on the at least one sensor input and the clock input.
12. The apparatus as claimed in claim 1 1 , further caused to perform at least one of:
determining an operational mode for an apparatus dependent on the apparatus context;
adapting an user interface dependent on the apparatus context;
adjusting data provided to at least one application dependent on the apparatus context;
filtering data dependent on the apparatus context;
selecting a service dependent on the apparatus context;
provide implicit interaction with the apparatus dependent on the apparatus context;
communicate the context to at least one further apparatus; and
performing an operation dependent on the apparatus context.
13. The apparatus as claimed in claims 1 1 and 12, wherein the apparatus caused to perform identifying at least one apparatus context is further caused to perform:
determining a probability for each apparatus context dependent on the at least one sensor input and the clock input; and
selecting the at least one apparatus context with the largest probability.
14. The apparatus as claimed in claim 13, wherein the apparatus caused to determine a probability for each apparatus context dependent on the at least one sensor input and the clock input is further caused to perform:
determining a likelihood for each apparatus context dependent on the at least one sensor input;
determining a second likelihood for each apparatus context dependent on the clock input; and
generating the probability for the each context by combining the likelihood by the second likelihood for each context.
15. The apparatus as claimed in claim 14, wherein the apparatus caused to determine the second likelihood is further caused to perform:
generating a likelihood for each context occurring at the time/date value of the clock input; and
generating the second likelihood as the exponentiation of the likelihood for each context occurring at the time/date value of the clock input by a predetermined value.
16. The apparatus as claimed in claim 15, wherein the apparatus caused to generate the likelihood for each context occurring at the time/date value of the clock input is further caused to perform:
determining the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input; and
dividing the number of prior occurrences or distribution of each apparatus context at the time/date value of the clock input by the total number of prior occurrences or distribution of each apparatus context.
17. The apparatus as claimed in claim 16, further caused to perform updating the number of prior occurrences or distribution of each apparatus using the identified apparatus context dependent at the time/date value of the clock input.
18. The apparatus as claimed in claims 1 1 to 17 wherein the sensor input comprises at least one of:
camera sensor;
microphone sensor;
temperature sensor;
humidity sensor;
tactile sensor;
electromyography sensor;
chemical sensor;
compass;
satellite positioning sensor; gyroscope/accelerometer;
antenna sensor;
battery sensor;
electroencephalograph;
pulse monitor;
blood pressure sensor; and
electrocardiograph.
19. The apparatus as claimed in claims 11 to 18, wherein the clock input comprises a time/date value which defines a time period of a day value and a day value.
20. The apparatus as claimed in claims 1 1 to 19, wherein the apparatus caused to identify the at least one apparatus context dependent on the at least one sensor input and the clock input is further caused to perform identifying the at least one context dependent on a profile value associated with the user.
PCT/IB2010/051008 2010-03-09 2010-03-09 Device and method for context recognition WO2011110897A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/IB2010/051008 WO2011110897A1 (en) 2010-03-09 2010-03-09 Device and method for context recognition

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2010/051008 WO2011110897A1 (en) 2010-03-09 2010-03-09 Device and method for context recognition

Publications (1)

Publication Number Publication Date
WO2011110897A1 true WO2011110897A1 (en) 2011-09-15

Family

ID=44562917

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2010/051008 WO2011110897A1 (en) 2010-03-09 2010-03-09 Device and method for context recognition

Country Status (1)

Country Link
WO (1) WO2011110897A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104239034A (en) * 2014-08-19 2014-12-24 北京奇虎科技有限公司 Occasion identification method and occasion identification device for intelligent electronic device as well as information notification method and information notification device
US9071939B2 (en) 2010-09-23 2015-06-30 Nokia Technologies Oy Methods and apparatuses for context determination
CN105340252A (en) * 2013-09-09 2016-02-17 Lg电子株式会社 Mobile terminal and method for controlling same

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003233625A (en) * 2002-02-06 2003-08-22 Ntt Docomo Inc Status recognition device and status recognition method
US20060167647A1 (en) * 2004-11-22 2006-07-27 Microsoft Corporation Sensing and analysis of ambient contextual signals for discriminating between indoor and outdoor locations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003233625A (en) * 2002-02-06 2003-08-22 Ntt Docomo Inc Status recognition device and status recognition method
US20060167647A1 (en) * 2004-11-22 2006-07-27 Microsoft Corporation Sensing and analysis of ambient contextual signals for discriminating between indoor and outdoor locations

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
ALESSANDRO CIARAMELLA ET AL.: "Situation-Aware Mobile Service Recommendation with Fuzzy Logic and Semantic Web", 2009 NINTH INTERNATIONAL CONFERENCE ON INTELLIGENT SYSTEMS DESIGN AND APPLICATIONS, ISDA'09, 30 November 2009 (2009-11-30), PISCATAWAY, NJ, USA, pages 1037 - 1042, XP031588943 *
DIMITRIOS LYMBEROPOULOS ET AL: "Macroscopic Human Behavior Interpretation Using Distributed Imager and Other Sensors", PROCEEDINGS OF THE IEEE, vol. 96, no. 10, October 2008 (2008-10-01), NEW YORK, US, pages 1657 - 1677, XP011237281 *
JUAN YE ET AL: "Using situation lattices in sensor analysis", IEEE INTERNATIONAL CONFERENCE ON PERVASIVE COMPUTING AND COMMUNICATIONS, 2009, 9 March 2009 (2009-03-09), PISCATAWAY, NJ, USA., pages 1 - 11., XP031453107 *
REDDY S. ET AL: "MobiSense - mobile network services for coordinated participatory sensing", INTERNATIONAL SYMPOSIUM ON AUTONOMOUS DECENTRALIZED SYSTEMS, 2009, 23 March 2009 (2009-03-23), PISCATAWAY, NJ, USA., pages 1 - 6., XP031514896 *
SANTOS A.C. ET AL: "Providing user context for mobile and social networking applications", PERVASIVE AND MOBILE COMPUTING, vol. 6, 2010, pages 324 - 341, XP003028196 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9071939B2 (en) 2010-09-23 2015-06-30 Nokia Technologies Oy Methods and apparatuses for context determination
CN105340252A (en) * 2013-09-09 2016-02-17 Lg电子株式会社 Mobile terminal and method for controlling same
EP3046263A4 (en) * 2013-09-09 2017-04-12 LG Electronics Inc. Mobile terminal and method for controlling same
US9847013B2 (en) 2013-09-09 2017-12-19 Lg Electronics Inc. Mobile terminal and method for controlling same
CN105340252B (en) * 2013-09-09 2019-04-05 Lg 电子株式会社 Mobile terminal and its control method
CN104239034A (en) * 2014-08-19 2014-12-24 北京奇虎科技有限公司 Occasion identification method and occasion identification device for intelligent electronic device as well as information notification method and information notification device

Similar Documents

Publication Publication Date Title
CN110310623B (en) Sample generation method, model training method, device, medium, and electronic apparatus
TWI619114B (en) Method and system of environment-sensitive automatic speech recognition
US10353476B2 (en) Efficient gesture processing
US9443202B2 (en) Adaptation of context models
US20200401367A1 (en) Determining that Audio Includes Music and then Identifying the Music as a Particular Song
CN107112008B (en) Prediction-based sequence identification
WO2019214361A1 (en) Method for detecting key term in speech signal, device, terminal, and storage medium
US8521681B2 (en) Apparatus and method for recognizing a context of an object
EP2433416B1 (en) Context recognition in mobile devices
US20170162192A1 (en) Method and Apparatus for Evaluating Trigger Phrase Enrollment
CN111210021B (en) Audio signal processing method, model training method and related device
US20120150777A1 (en) Action history search device
CN105580071B (en) Method and apparatus for training a voice recognition model database
WO2007098316A1 (en) Voice recognition with speaker adaptation and registration with pitch
CN103038765A (en) Method and apparatus for adapting a context model
CN108962241B (en) Position prompting method and device, storage medium and electronic equipment
CN108831508A (en) Voice activity detection method, device and equipment
CN107274903B (en) Text processing method and device for text processing
US11398219B2 (en) Speech synthesizer using artificial intelligence and method of operating the same
KR20150087253A (en) Sequential feature computation for power efficient classification
CN113450771B (en) Awakening method, model training method and device
CN111816162A (en) Voice change information detection method, model training method and related device
US7251603B2 (en) Audio-only backoff in audio-visual speech recognition system
WO2011110897A1 (en) Device and method for context recognition
JP2009238196A (en) Method and system for estimating moving state of portable terminal apparatus

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10847312

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10847312

Country of ref document: EP

Kind code of ref document: A1